D0c613856d7a9608406158f2f3fd0199
初探 iOS 上的人工智能:Core ML

作者:@故胤道长,亚马逊 iOS 工程师,曾就职于 Uber

Machine Learning 基本介绍

机器学习是一门人工智能的科学。它通过对经验、数据进行分析,来改进现有的计算机算法,优化现有的程序性能。其基本流程如下图:

如图,机器学习有三个要素:

  • 数据(Data)
  • 学习算法(Learning Algorith)
  • 模型(Model)

以图片分析 App 为例,这个场景下的数据、学习算法和模型分别对应:

  • 数据:各种花的图片。这些数据称为此次机器学习的样本(Sample)。每张图片中包含的信息,比如形状、色彩,称之为特征(Feature)。每张图片对应的花朵,比如梅花、玫瑰,称之为标签(Label)。这些图片中蕴含着某些规律,而我们人类正是依靠这些规律判断出图片对应的花朵(标签)。现在我们希望机器能够把这个规律挖掘出来。这样在面对新的样本时,机器能根据其特征,准确判断其对应标签,也就是判断图片对应的花朵。
  • 学习算法:机器学习的算法有很多,比如神经网络、逻辑回归、随机森林等等。作为 iOS 工程师我们无需深刻理解这些算法,只要知道输入数据后执行“学习算法”就可以得到模型。
  • 模型:即机器从样本数据中挖掘出来的规律。有了模型之后,面对新的数据,模型就可以做出相应判断,例如下图图片是郁金香还是玫瑰。

Core ML 到底是什么

Core ML 是苹果为其开发者准备的机器学习框架。支持 iOS, MacOS,tvOS,和 watchOS。它由4部分组成,其结构如下图:

  • 最底层性能框架层:由 Acccelerate 和 Metal Performance Shaders 两个框架组成。前者用于图形学和数学上的大规模计算,后者用于优化与加速 GPU 和图形渲染。
  • Core ML:支持导入机器学习的模型,并生成对应高级代码(Swift, Objective-C)的框架。
  • 专用机器学习框架:基于 Core ML,针对特殊场景进行封装和优化的框架。如上图所示,Vision 框架和 NLP 框架都是 iOS 11 最新添加:前者用于图片分析,例如人脸识别;后者用于自然语义分析,例如上下文理解。原来 iOS 中的 GamePlayKit 框架也加入 Core ML,用于决策树(Decision Tree)模型的学习。
  • 应用层:使用了这些框架之后构建起来的 App。应用场景(如下图)十分广泛:人脸识别,手写文字理解,类型转化,文字情感分析,自动翻译,等等。

应用和代码详解

主要操作过程分三步:

  1. 得到 Core ML 的模型
  2. 将模型导入项目中
  3. 用生成的 Swift 接口进行编程

得到 Core ML 的模型

苹果官网上你可以直接拿到训练好的模型。目前有4个:


你也可以自己训练模型,或到第三方社区去下载别人训练好的模型。苹果提供了转换器(基于 Python,开源)用于把其它机器学习框架训练出来的模型转化为 Core ML 适配的模型。如下图所示:


如何使用 Core ML Tools 进行转化的原理和演示详见《Core ML in Depth》文章。

将模型导入项目中

top Created with Sketch.