手把手 | 如何在你的iPhone上建立第一个机器学习模型(Apple最新CoreML框架入门)
大数据文摘作品
作者:MOHD SANAD ZAKI RIZVI
编译:Happen,Chloe,笪洁琼,魏子敏
引言
作为一名数据科学家,我一直有一个梦想——顶级科技公司在与我相关的领域不断推出新产品。
如果你观看了Apple公司最新的iPhone X发布会,你会发现iPhone X具有非常酷的特性,比如FaceID、动态表情、增强现实,这些特性都使用了机器学习。作为一名骇客,我决定亲自上手探索一下如何建立那样的系统。
进一步调查后我发现了一个很有趣的工具,那就是Apple官方面向开发者推出的机器学习框架工具CoreML。它可以在iPhone、Macbook、Apple TV、Apple watch等任何一个苹果设备上使用。
另一个有趣的发现是Apple在最新的iPhone手机上设计了一个定制GPU,以及一个带有神经引擎的A11先进仿生学处理芯片,以便用于优化机器学习。
随着核心组件计算引擎功能日益强大,iPhone将开辟机器学习的新途径,CoreML在未来的意义将越来越重要。
读完这篇文章,大家将会了解Apple CoreML是什么以及为何它势头正猛。我们也将通过开发一款iPhone上的垃圾短信分类app来与大家一起一探CoreML的实现细节。
同时,我们也会通过客观评价CoreML的利弊来结束本篇文章。
文章目录:
1.CoreML是什么?
2.建立系统
3.案例学习:实现一个iPhone上的垃圾短信分类app
4.使用CoreML的利弊
01
CoreML是什么?
今年,Apple公司在每年一次的全球开发者大会WWDC(类似于谷歌的I/O会议)上大肆宣传CoreML。为了更好地理解CoreML的作用,我们需要了解一些背景。
CoreML的背景
有趣的是,这并不是Apple公司第一次发布移动端机器学习框架。去年它就发布了一些同样的框架库:
1.Accelerate 框架和基本神经网络子程序(BNNS)——高效利用CPU并使用卷积神经网络进行预测。
2.Metal Performance Shaders CNN(MPSCNN)——高效利用GPU并使用卷积神经网络进行预测。
这两个框架库的区别在于,一个针对CPU优化而另一个针对GPU。这是因为有时在inference(推断)过程中CPU比GPU计算更快,而在training(训练)过程中几乎每次都是GPU计算更快。
但为了提高性能,框架会非常接近底层硬件,使得这些混合框架对开发者造成混乱,从而很难编程。
走进CoreML
CoreML 会在之前提到的两个库上面提供一个抽象层,并且还会提供一个简单的接口,以达到同样的效率。另一个好处是,在我们的app运行时,CoreML充分照顾到了CPU与GPU之间的上下文切换。
换句话说,假如我们有一个耗内存的任务,它涉及文本处理(自然语言处理),CoreML将自动在CPU运行;而如果我们有一个计算繁重的任务,例如图像识别,它将使用GPU;当app包含这两种功能的时候,它又会自动切换从而使得两者都得到最大化的利用。
CoreML还将提供什么?
CoreML顶层还附带了三个库:
1.Vision:这个库提供了高性能图像分析与计算机视觉技术,用于人脸识别、特征检测以及图像与视频中的场景识别。
2.Foundation(NLP):顾名思义,它提供了自然语言处理的一些功能
3.Gameplay Kit:用于游戏开发的库,此外它还提供了AI,并运用决策树。
以上提到的所有库都可以用一些简单的接口轻松使用,可用于完成一系列任务。通过上述的库,CoreML最终框架图如下:
注意,上述设计给iOS应用程序提供了一个很好的模块化结构。你可以使用不同层进行不同的任务,也可以用多种方式使用它们(例如,在app中使用NLP进行图像分类)。了解更多:Vision、Foundation与GameplayKit。好了,现在我们有了足够的理论知识,是时候实践一下了!
“微信排版限制,需要代码的同学请看文末的原文链接自行查找”
02
建立系统