Slide 1

Slide 1 text

从 Swift 到 机器器学习 CreateML - Swifter 通向 ML 的⾦金金钥匙 王 巍 (onevcat) 2018.09.15, @Swift Conf.

Slide 2

Slide 2 text

后移动开发时代 Google Trends: “iOS Develop”

Slide 3

Slide 3 text

WWDC 2013

Slide 4

Slide 4 text

转变⼀一般都会带来痛苦

Slide 5

Slide 5 text

如何评价 2017 年年初华为开始「清理理」34 岁以上的职员? 程序员能纯靠技术渡过中年年危机吗? 程序员30岁之前年年薪不不到40W,再不不转⾏行行都晚了了? iOS 末路路了了吗,我找⼯工作两个⽉月,没⼈人要 35 岁做不不到管理理就等于失业

Slide 6

Slide 6 text

我(们)的出路路在哪⾥里里

Slide 7

Slide 7 text

我(们)的出路路在哪⾥里里 ⼤大前端 React Native Weex ⼩小程序 Flutter 机器器学习 深度学习 计算机视觉 ⾃自然语⾔言处理理 ⻛风格化图像处理理

Slide 8

Slide 8 text

其余的出路路 区块链 P2P信贷 做个快乐的肥宅

Slide 9

Slide 9 text

做个快乐的肥宅

Slide 10

Slide 10 text

I have an idea!

Slide 11

Slide 11 text

App: 普尔亚后援会 • 使⽤用相机或者照⽚片库 • 识别照⽚片中的普尔亚⼿手势 • 收集到三张照⽚片获得奖励

Slide 12

Slide 12 text

HOW?

Slide 13

Slide 13 text

我(们)的出路路在哪⾥里里 ⼤大前端 React Native Weex ⼩小程序 Flutter 机器器学习 深度学习 计算机视觉 ⾃自然语⾔言处理理 ⻛风格化图像处理理

Slide 14

Slide 14 text

CreateML WWDC 2018 Session 703 https://developer.apple.com/videos/play/wwdc2018/703/

Slide 15

Slide 15 text

⼀一般流程 准备数据 训练模型 评估模型

Slide 16

Slide 16 text

⼀一般流程 准备数据 训练模型 评估模型 图⽚片 + 分类标签 准备训练数据 (train set) 和验证数据 (validation set) 调整参数 寻找使训练数据具有最⼩小误差值的⼀一组参数 使⽤用验证数据对模型准确率评估

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

⼀一般流程 准备数据 训练模型 评估模型

Slide 19

Slide 19 text

CreateML 到底做了了什什么

Slide 20

Slide 20 text

mlmodel https://apple.github.io/coremltools/coremlspecification/index.html Protocol Buffers 序列列化的模型描述 layer 类型,权重等

Slide 21

Slide 21 text

~KB 迁移学习 VisionFeaturePrint_Scene mlmodel VisionFeaturePrint_Scene 只存在于 iOS 12, macOS 10.14 Vision 框架背后的特征提取 17KB in Demo Transfer Learning

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

✅ VisionFeaturePrint_Scene VisionFeaturePrint_Screen

Slide 24

Slide 24 text

Core ML Community Tools

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

visionFeaturePrint glmClassifier

Slide 27

Slide 27 text

开始定义 pipeline 输⼊入 299x299 保留留特性的同时限制处理理时间 内置模型 (特征提取) 2048 个特征的数组 (1, 2048) ⼴广义线性模型 (GLM) (2048, 1),与特征点乘得到结果

Slide 28

Slide 28 text

发⽣生了了什什么

Slide 29

Slide 29 text

Turi

Slide 30

Slide 30 text

Turi • 2013, 成⽴立 • 2016, Apple 以 2 亿美元收购 • 2017, 开源, ⽀支持 Metal 和 macOS GPU 加速 • 2018, 部分集成⼊入 Apple Developer Toolkit (Xcode) • 未来, 更更多的学习任务… 基于学习任务的 “傻⽠瓜式” 机器器学习框架

Slide 31

Slide 31 text

⼏几个问题

Slide 32

Slide 32 text

VisionFeaturePrint 集成在 iOS 12 和 macOS 10.14 中 问题 No.1

Slide 33

Slide 33 text

Core ML - iOS 11 • CoreML 从 iOS 11 开始⽀支持 • ⽆无法读取 CreateML 创建的带有 VisionFeaturePrint 的模型

Slide 34

Slide 34 text

Core ML - iOS 11 使⽤用 TuriCreate 的其他模型进⾏行行特征提取 可以得到与 CreateML 相近的结果

Slide 35

Slide 35 text

https://github.com/apple/turicreate

Slide 36

Slide 36 text

Demo

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

~ 90+ MB

Slide 39

Slide 39 text

过拟合,准确率 问题 No.2

Slide 40

Slide 40 text

⼀一个⾼高度 的模型 Overfitting 过拟合

Slide 41

Slide 41 text

过拟合

Slide 42

Slide 42 text

过拟合 训练数据严重不不⾜足 只来源于单⼀一⼈人员和单⼀一场景 对于⾮非该⼈人员的识别相当低效 默认的训练⽅方式只对最后⼀一层进⾏行行训练 特征提取模型中不不包含对应特征

Slide 43

Slide 43 text

0 22.5 45 67.5 90 0 5 10 15 20 准确率

Slide 44

Slide 44 text

默认特征提取模型下 增加训练数据,可以达到 85% 左右

Slide 45

Slide 45 text

卷积神经⽹网络和特征提取

Slide 46

Slide 46 text

抽象特征 (边缘,线条,⻆角度) 具体特征 (眼睛,⿐鼻⼦子,⽿耳朵)

Slide 47

Slide 47 text

CreateML (Turi) 的迁移学习 只对最后⼀一层进⾏行行训练 抽象特征 泛⽤用性 具体特征 专⽤用性

Slide 48

Slide 48 text

调整若⼲干层卷积层参数 进⾏行行迁移学习

Slide 49

Slide 49 text

CreateML / Turi

Slide 50

Slide 50 text

更更加“可操控”的学习⽅方式

Slide 51

Slide 51 text

更更加“可操控”的学习⽅方式

Slide 52

Slide 52 text

92% 左右的正确率

Slide 53

Slide 53 text

⼀一些客户端 ML 的 实际应⽤用

Slide 54

Slide 54 text

Super-Resolution SRCNN

Slide 55

Slide 55 text

https://speakerdeck.com/kenmaz/super-resolution-with-coreml-at-try-swift-tokyo-2018 SRCNNKit from DeNA

Slide 56

Slide 56 text

https://github.com/DeNA/SRCNNKit

Slide 57

Slide 57 text

在漫画之外使⽤用 1. 专⻔门的训练数据 2. 通过预处理理提取场景特征 (⼈人物,⻛风景,UI) 3.更更多的层数

Slide 58

Slide 58 text

⾳音乐情绪识别

Slide 59

Slide 59 text

从⾳音乐的曲调和节奏识别⾳音乐情绪 Music Keyword 梁梁祝 温柔婉转 命运交响曲 激情雄壮 ⼩小苹果 轻松欢快

Slide 60

Slide 60 text

其他场景 • 本地垃圾短信识别 • 游戏 AI (GameplayKit) • 专⽤用的图像分类/识别 • etc…

Slide 61

Slide 61 text

总结 • ⼩小模型,Client Side ML 的关键 • 对于既有特征表现⾮非常出⾊色 (ImageNet Category) • 简单,⽆无脑,拖拽式得到可⽤用模型 • 对⼯工程师友好,可以在 client 本机编译 (下载更更新模型)

Slide 62

Slide 62 text

总结 • 只适⽤用于特定任务 (图⽚片分类/⾃自然语⾔言处理理/回归分析) • TuriCreate 只能有限扩展 (使⽤用第三⽅方模型, ⻛风格化图 ⽚片滤镜等) • ⽆无法处理理⾃自定义模型,或者更更⼀一般化的任务

Slide 63

Slide 63 text

⼀一些资源 Awesome Core ML Models https://github.com/likedan/Awesome-CoreML-Models Machine Learning for iOS https://github.com/alexsosn/iOS_ML Apple Machine Learning Journal https://machinelearning.apple.com Kraggle https://www.kaggle.com Machine Learning (Turi) - Coursera https://coursera.org/specializations/machine-learning Deep Learning with Python https://www.manning.com/books/deep-learning-with-python

Slide 64

Slide 64 text

谢谢!: ] @onevcat, [email protected]