从 Swift 到 机器器学习CreateML - Swifter 通向 ML 的⾦金金钥匙 王 巍 (onevcat)2018.09.15, @Swift Conf.
View Slide
后移动开发时代Google Trends: “iOS Develop”
WWDC 2013
转变⼀一般都会带来痛苦
如何评价 2017 年年初华为开始「清理理」34 岁以上的职员?程序员能纯靠技术渡过中年年危机吗?程序员30岁之前年年薪不不到40W,再不不转⾏行行都晚了了?iOS 末路路了了吗,我找⼯工作两个⽉月,没⼈人要35 岁做不不到管理理就等于失业
我(们)的出路路在哪⾥里里
我(们)的出路路在哪⾥里里⼤大前端React NativeWeex⼩小程序Flutter机器器学习深度学习计算机视觉⾃自然语⾔言处理理⻛风格化图像处理理
其余的出路路区块链P2P信贷做个快乐的肥宅
做个快乐的肥宅
I have an idea!
App: 普尔亚后援会• 使⽤用相机或者照⽚片库• 识别照⽚片中的普尔亚⼿手势• 收集到三张照⽚片获得奖励
HOW?
CreateMLWWDC 2018 Session 703https://developer.apple.com/videos/play/wwdc2018/703/
⼀一般流程准备数据 训练模型评估模型
⼀一般流程准备数据训练模型评估模型图⽚片 + 分类标签准备训练数据 (train set) 和验证数据 (validation set)调整参数寻找使训练数据具有最⼩小误差值的⼀一组参数使⽤用验证数据对模型准确率评估
CreateML到底做了了什什么
mlmodelhttps://apple.github.io/coremltools/coremlspecification/index.htmlProtocol Buffers 序列列化的模型描述layer 类型,权重等
~KB迁移学习VisionFeaturePrint_Scene mlmodelVisionFeaturePrint_Scene只存在于 iOS 12, macOS 10.14Vision 框架背后的特征提取17KB in DemoTransfer Learning
✅ VisionFeaturePrint_Scene VisionFeaturePrint_Screen
Core ML Community Tools
visionFeaturePrint glmClassifier
开始定义 pipeline输⼊入 299x299保留留特性的同时限制处理理时间内置模型 (特征提取)2048 个特征的数组 (1, 2048)⼴广义线性模型 (GLM)(2048, 1),与特征点乘得到结果
发⽣生了了什什么
Turi
Turi• 2013, 成⽴立• 2016, Apple 以 2 亿美元收购• 2017, 开源, ⽀支持 Metal 和 macOS GPU 加速• 2018, 部分集成⼊入 Apple Developer Toolkit (Xcode)• 未来, 更更多的学习任务…基于学习任务的 “傻⽠瓜式” 机器器学习框架
⼏几个问题
VisionFeaturePrint集成在 iOS 12 和 macOS 10.14 中问题 No.1
Core ML - iOS 11• CoreML 从 iOS 11 开始⽀支持• ⽆无法读取 CreateML 创建的带有 VisionFeaturePrint的模型
Core ML - iOS 11使⽤用 TuriCreate 的其他模型进⾏行行特征提取可以得到与 CreateML 相近的结果
https://github.com/apple/turicreate
Demo
~ 90+ MB
过拟合,准确率问题 No.2
⼀一个⾼高度 的模型Overfitting过拟合
过拟合
过拟合训练数据严重不不⾜足只来源于单⼀一⼈人员和单⼀一场景对于⾮非该⼈人员的识别相当低效默认的训练⽅方式只对最后⼀一层进⾏行行训练特征提取模型中不不包含对应特征
022.54567.5900 5 10 15 20准确率
默认特征提取模型下增加训练数据,可以达到 85% 左右
卷积神经⽹网络和特征提取
抽象特征(边缘,线条,⻆角度)具体特征(眼睛,⿐鼻⼦子,⽿耳朵)
CreateML (Turi) 的迁移学习只对最后⼀一层进⾏行行训练抽象特征泛⽤用性具体特征专⽤用性
调整若⼲干层卷积层参数进⾏行行迁移学习
CreateML / Turi
更更加“可操控”的学习⽅方式
92% 左右的正确率
⼀一些客户端 ML 的实际应⽤用
Super-ResolutionSRCNN
https://speakerdeck.com/kenmaz/super-resolution-with-coreml-at-try-swift-tokyo-2018SRCNNKit from DeNA
https://github.com/DeNA/SRCNNKit
在漫画之外使⽤用1. 专⻔门的训练数据2. 通过预处理理提取场景特征(⼈人物,⻛风景,UI)3.更更多的层数
⾳音乐情绪识别
从⾳音乐的曲调和节奏识别⾳音乐情绪Music Keyword梁梁祝 温柔婉转命运交响曲 激情雄壮⼩小苹果 轻松欢快
其他场景• 本地垃圾短信识别• 游戏 AI (GameplayKit)• 专⽤用的图像分类/识别• etc…
总结 • ⼩小模型,Client Side ML 的关键• 对于既有特征表现⾮非常出⾊色 (ImageNet Category)• 简单,⽆无脑,拖拽式得到可⽤用模型• 对⼯工程师友好,可以在 client 本机编译 (下载更更新模型)
总结 • 只适⽤用于特定任务 (图⽚片分类/⾃自然语⾔言处理理/回归分析)• TuriCreate 只能有限扩展 (使⽤用第三⽅方模型, ⻛风格化图⽚片滤镜等)• ⽆无法处理理⾃自定义模型,或者更更⼀一般化的任务
⼀一些资源Awesome Core ML Modelshttps://github.com/likedan/Awesome-CoreML-ModelsMachine Learning for iOShttps://github.com/alexsosn/iOS_MLApple Machine Learning Journalhttps://machinelearning.apple.comKragglehttps://www.kaggle.comMachine Learning (Turi) - Courserahttps://coursera.org/specializations/machine-learningDeep Learning with Pythonhttps://www.manning.com/books/deep-learning-with-python
谢谢!: ]@onevcat, [email protected]