介绍
想象一下,在不需要深入了解机器学习的情况下,使用最先进的机器学习模型来构建应用程序。这就是Apple的CoreML3!
你是Apple的狂热粉丝吗?你用iPhone吗?有没有想过Apple是如何利用机器学习和深度学习来驱动其应用和软件的?
如果你对以上任何一个问题的回答是肯定的,那么你将会得到一场盛宴!因为在本文中,我们将使用深度学习和Apple的CoreML3为iPhone构建一个应用程序。下面是这款应用的快速浏览:
软件开发人员、程序员甚至数据科学家都喜欢Apple的人工智能生态。近年来,他们取得了一些惊人的进展,包括CoreML和我个人最喜欢的Swift编程语言。
CoreML3是一个框架,支持iPhone的一些功能,比如FaceID、Animoji和增强现实AR。自从CoreML在年发布以来,它已经走过了很长的路,现在它支持大量的工具,可以帮助我们快速构建基于机器学习的应用程序。
在这篇文章中,我们将探索Apple应用程序的整个人工智能生态,以及如何使用CoreML3丰富的生态,包括前沿的预训练深度模型。
目录
Apple的人工智能生态CoreML3CoreML3的新特性使用ResNet50为iPhone构建一个图像分类应用分析Vidhya对CoreML的看法Apple的人工智能生态
Apple在构建利用机器学习的工具和框架方面做得很好。构建人工智能应用程序有多种选择,每种选择都有其优缺点。
让我们了解一下每个工具或框架。
1)TuriCreate
这应该是你的首选框架,如果你想添加推荐,对象检测,图像分类,图像相似性或活动分类等任务到你的应用程序。
使用这个工具你不需要成为机器学习专家因为它已经为每个任务定义了模型。
我喜欢TuriCreate的一点是,我们可以在Python中使用它,就像我们的常规工作流程一样。当我们对我们的模型感到满意时,只需将它导入到CoreML中,就可以在iOS、macOS、watchOS和tvOS应用程序中使用!
以下是TuriCreate的支持的一些任务:
2)CreateML
CreateML使我们能够构建机器学习模型,而不需要编写太多代码。
我喜欢这个工具的地方是,你可以拖放你的训练数据,选择你想要的模型类型(语音识别,对象检测等),它会自动开始训练模型!
下面是一个训练猫狗图像分类器的例子:
请注意,我只编写了两行代码并拖拽训练数据到目标文件夹,其余部分都由CreateML负责!
TuriCreate可以在Python中工作,而我们可以使用CreateML在Mac上构建程序。并且它支持在GPU上进行训练
3)用于TensorFlow的Swift
SwiftforTensorFlow有一个灵活、高性能的类似于TensorFlow/PyTorch的API来构建复杂的神经网络架构。
这个框架最吸引人的地方是它的代码和Python的代码一样易读。以下是相同的模型在Swift和Python的不同表达(注意相似性):
当你需要模型的高性能并希望有效地部署它们时,可以选择Swift来使用TensorFlow。
4)语言和视觉框架
这些是Apple针对Python的spaCy和OpenCV框架创建的副本,但是增加了功能。这些框架允许我们创建端到端管道来执行图像处理和文本处理等。
如果你想执行图像分析任务,如人脸或地标检测、文本检测、条形码识别、图像配准和一般特征跟踪,那么视觉就是你的选择。
类似地,如果你想执行诸如语言和脚本识别、分词、lemmatization、词性分析和命名实体识别等任务,那么语言模块将会很有用。
除了这两个,Apple还支持处理语音数据的框架(并且它们很容易与CoreML一起工作)。我将在以后的文章中介绍这些工具。现在,让我们来看看最精彩的框架——ML3!
CoreML3
我喜欢Apple的CoreML3框架。它不仅支持我们在上面看到的工具,而且还支持它自己的一些功能。
首先,CoreML3允许我们导入主流的Python框架中训练过的机器学习或深度学习模型:
我们在前面的一篇文章中已经介绍了CoreML3的这个功能。在这里,我们将看到CoreML3的另一个有趣的功能,我们如何利用CoreML3使用大量前沿的预训练模型!
下面是CoreML3支持的模型列表。注意其中的一些(比如Squeezenet,DeeplabV3,YOLOv3)是最近几个月才出现的:
所有这些模型实际上都经过了优化,以便在移动设备、平板电脑和电脑上提供最佳性能。这就是Apple的伟大之处。
这意味着,即使其中许多是复杂的基于深度学习的模型,我们也不必在部署和在应用程序中使用它们时过多地担心性能——这有多酷?
CoreML3的新特性
你看了今年的WWDC大会了吗?关于Apple设备对这个框架的支持,有一些有趣的公告。这里有一个简短的总结,以防你错过。
1)设备内置的训练
这是CoreML3目前为止最突出的功能。之前,我们只支持“设备上的推理”。这基本上意味着我们在其他机器上训练我们的模型,然后利用训练好的模型对设备本身进行实时预测。新功能导致了更好的用户体验,因为我们不依赖互联网来获得预测。
CoreML3现在也支持设备上的训练!你可以使用iPhone的CPU、GPU和神经引擎来训练你的机器学习和深度学习模型。
你可以将CoreML3训练视为一种迁移学习或在线学习的形式,在这种形式中,你只需要调整现有的模型。
以FaceID为例。当用户的脸随着时间变化(长胡子、化妆、变老等)时,它需要保持模型的更新。基本思想是,首先拥有一个通用模型,它为每个人提供平均性能,然后为每个用户定制一个副本。
随着时间的推移,这个模型会变得非常适合特定的用户:
这样做有很多好处:
训练将在用户的个人设备上进行,这对用户来说意味着很高的数据隐私我们不需要设置庞大的服务器来帮助数百万应用程序用户进行模型训练因为不涉及互联网,这些模型预测时一直可用!2)在CoreML3中加入了新型的神经网络层
除了为不同的模型类型提供层外,CoreML3还为中间操作提供了多个层,比如掩蔽、张量操作、布尔逻辑、控制流等等。
这些层类型中的一些已经被用在最先进的神经网络架构中,CoreML3已经为我们提供了支持。
这仅仅意味着我们可以很容易地为我们的应用程序立即构建这样的模型。
如果你对整个包感兴趣,可以免费观看整个WWDC视频。出于本文的目的,我们介绍了coreML3的核心基础知识。现在是时候构建一个iPhone应用程序了!视频链接: