WWDC2018 – Introducing Create ML

作者 : 开心源码 本文共2802个字,预计阅读时间需要8分钟 发布时间: 2022-05-12 共208人阅读

前言


去年加入的CoreML framework大获成功,相信许多开发者都已经尝试在自己的app里加入机器学习的功可以了,然而从哪里获取模型的问题一直不太好处理。即便苹果提供了一个python工具 — CoreML Tool,能将caffe等模型转成coreML模型,但支持的文件类型有限(后面支持了大多数类型),我尝试过,对于我这种ML领域小白,感觉也不太好使用。所以苹果今年提供了一个全新的库—createML,他是swift专属的framework,能处理获取CoreML模型的难题。

CreateML

这个topic主要详情了

  • Transfer Learning(迁移学习)
  • 图像识别
  • 文本识别
  • 表格数据推断

通过createML和CoreML,能只使用swift一种语言,在mac上处理创立/训练/评估模型-跑模型-部署到端上运行,并且训练、评估模型都是一两句代码即可以实现。对于iOS开发者来说,引入机器学习的成本能说非常低了,值得关注。

机器学习工作流

CreateML目前只可以训练三种类型的数据:图像、文字和表格数据。
对应目前的识别可以力就是图像、文本识别和根据表格数据推断等。

Transfer Learning


我准备开始训练数据,然而难题出现了,我上哪找大量使用来训练的数据?
得益于transfer learning,仅仅需要一些数据就足够了。因为苹果本身在端上已经内置了多个自己的识别模型(应该是少量大文件,苹果训练了多年的数据,我了解是万物识别),我们训练的模型是基于苹果模型的一种加强,具体就是将他的模型最后几层layer重新根据我们的数据训练。最终做推断时会结合苹果的训练结果和你提供的数据的训练结果来推断。

Labeled Fruits是我们提供的数据,通过createML重新训练苹果模型的最后几层,最终输出一个coreML模型

这样训练时间大大减少,甚至几秒钟就可以训练完成。
模型大小也可以从100MB级别减少到KB级别。

transfer learning让模型能复使用,个人开发者能轻松训练出体积小的模型,让app更加智可以。同时体积小的文件方便下发到端上,甚至内置在安装包里发布。

图像


首先要自己将图像数据分类好,准备好使用来训练的数据和使用来评估的数据。下图是一种分类方式,将每种类型的图片放在一个文件夹里。而后创立一个swift playground

注意:需要macOS mojave 10.14Beta,Xcode10Beta,并且playground项目最好放在桌面,多试几次import CreateML才可以出来。

两行代码,run,就出现一个可视化的窗口

png或者jpg文件都能,尺寸没有要求,把TestImages文件夹和TrainImages文件夹分别拖进来即可以了,当然也能使用纯代码的方式训练,流程是:

指定数据源 – 创立模型 – 评估模型 – 保存模型

如下图。

纯代码训练和评估模型,#!/usr/bin/swift变成可执行文件

这里我用了 Rubenfer/CreateML里提供的图片,成心用8张图片来训练,只有猫和狗两种类型,19张图片使用来评估预测,精确率居然100%,模型文件只有17KB。
而后我将dog文件夹名字改成cat,cat改成dog,发现识别精确率仍然100%,对于错误分类的数据也可以“正确”的预测出来,当然,你给一张猫狗以外的图片一定识别错,由于结果枚举里只有猫狗这两种。不过transfer learning还是很牛逼了。

假如对模型满意,只需将模型文件拖到项目里就可,具体CoreML文件的用参考去年的https://developer.apple.com/videos/play/wwdc2017/703

建议自己尝试 Rubenfer/CreateML

文本


data source的格式支持以文件夹分类的txt文本、csv文件和json格式的文件。

文本识别的流程被极大简化了,识别前的语言预测和文本分段都不需要考虑。流程和图片识别相似,只是将MLImageClassifier换成了MLTextClassifier,如下图。

文件夹作为数据源的NLP workflowjson文件作为数据源,用MLDataTable

尽管今年NLP支持了中文的词性识别和中文机构识别,但我在testData里加入中文如同导致死循环了,不太确定中文数据可以否使用在createML里。
关于NLP的用,以前是使用NSLinguisticTagger,今年有了一整套新的NL开头的api,参考https://developer.apple.com/videos/play/wwdc2018/713/

建议自己尝试 Flight-School/Programming-Language-Classifier,能取得一个可以够识别多种编程语言的模型文件。

识别精确率高达99.64%

表格(TabularData)


createML用MLDataTable来解决表格数据,datasource支持csv、json,它是基于Turi的。

表格的行是一个example,列是一个feature,通常选取一个列作为target来预测,以example为单位挖掘每个feature之间的关系。这里把price作为target,评估数据时target列的数据对于模型是隐藏的,通过挖掘到的关系来对price做一个inference(预测),再和真实数据里的price比较,评估精确率。

能方便地挑选想要的example

流程和上面的相似。randomSplit能将你提供的数据源随机按比例划分成训练数据和评估数据。这里返回的元组,80%的数据是使用来训练的,20%是使用来评估的。table数据的训练有很多训练器,包括MLBoostedTreeRegressor、MLDecisionTreeRegressor、MLRandomForestRegressor、MLLinearRegressor等,假如不知道要使用哪个,能直接使用MLRegressor,他会自动选择一个最合适的。

TabularData workflow

总结


我的了解:createML训练出来的模型必然是依赖苹果模型的,其实本质是使用苹果的模型来识别,所以离开苹果的环境应该无法用。而我们日常开发中费很大力气训练出一个可使用的模型,是希望它可以运行在多平台的,这样看来CreateML最终产出的CoreML只支持iOS/macOS,在这点上有很大局限性,所以这可可以是苹果接下来要处理的另一个难题。
可以否让CoreML运行在android等其余平台,将成为CoreML普及的一个关键,目前来看只有纯粹的开发iOS/macOS平台的个人开发者会用CoreML和CreateML。
尽管如此,我们还是应该开始尝试,毕竟ML的准入门槛已经降低了很多,以后ML也必将成为每个app的标配。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » WWDC2018 – Introducing Create ML

发表回复