Outline
1.背景
2.ML Framework
3.Core ML
4.Vision Framework
5.開發(fā)流程
背景
Machine Learning 的常見應(yīng)用場(chǎng)景

Text Prediction :文本預(yù)測(cè),如輸入法預(yù)測(cè);
Entity Recognition:是指識(shí)別文本中具有特定意義的實(shí)體,主要包括人名、地名、機(jī)構(gòu)名、專有名詞等;
Sentiment? Analysis:情感分析,如對(duì)京東用戶商品評(píng)論進(jìn)行分析。
Style Transfer:圖像風(fēng)格轉(zhuǎn)化,如轉(zhuǎn)換成梵高風(fēng)格,水彩、鉛筆,油墨
Image Captioning:自動(dòng)圖像說明,通過識(shí)別圖中的實(shí)體,生成描述圖像的文本;
Music Tagging:音樂分類
Text Summarization:文本摘要,如通過算法自動(dòng)生成今日頭條文章的摘要
蘋果在ML上的應(yīng)用

其實(shí),蘋果已經(jīng)在不少產(chǎn)品中使用了ML技術(shù),如相冊(cè)分類,輸入法預(yù)測(cè),watch上的手寫識(shí)別,搜索推薦,siri語(yǔ)音識(shí)別。
如何來識(shí)別一朵玫瑰花?
ML的初衷是讓機(jī)器學(xué)習(xí)人類的思維來解決問題。那么人是如何識(shí)別出一朵玫瑰花的呢?一個(gè)沒見過玫瑰花的小朋友,自然傻傻分不清。當(dāng)有人傳授給他相關(guān)經(jīng)驗(yàn)(花瓣的形狀,顏色,氣味等特征)后,他便擁有了比較準(zhǔn)確的識(shí)別能力了。也許經(jīng)歷了幾次錯(cuò)誤識(shí)別之后,他最終真正掌握了識(shí)別玫瑰花的能力。
那么,機(jī)器也是一樣。先傳授給他經(jīng)驗(yàn),讓他記住花有哪些特征。進(jìn)而給出一些花讓他識(shí)別,根據(jù)識(shí)別的結(jié)果總結(jié)經(jīng)驗(yàn),改進(jìn)識(shí)別的思維,提升準(zhǔn)確率。最終具備較高的識(shí)別玫瑰花的能力。

當(dāng)具備了某種能力之后,就需要考慮如何應(yīng)用到實(shí)踐中,促進(jìn)社會(huì)生產(chǎn)力的進(jìn)步,提高效率,造福人類(此處存在?)。

假如讓一臺(tái)移動(dòng)終端設(shè)備(iPhone)來跑ML的Model

ML Framework
框架層級(jí)

Accelerate 和 MPS是兩個(gè)底層庫(kù),Accelerate 主要是高性能的進(jìn)行圖像、矩陣、向量、大數(shù)值運(yùn)算。使用MPS可以直接跟GPU打交道,進(jìn)行高性能圖像處理。貼下官方描述:
Accelerate:Make large-scale mathematical computations and image calculations, optimized for high performance。
The Metal Performance Shaders (MPS) framework is now available on macOS, providing a highly tuned library of image processing and machine learning primitives to developers. In Metal 2, MPS expands its machine learning capabilities to enable new classes of algorithms, such as natural language processing, to execute on the GPU.

Core ML和Vision之后分別單獨(dú)列出介紹,NLP是專門為自然語(yǔ)言處理相關(guān)的應(yīng)用場(chǎng)景而設(shè)計(jì)。
蘋果目前致力于讓Model可以在單個(gè)終端設(shè)備(iPhone)上運(yùn)行,有挑戰(zhàn),也有優(yōu)勢(shì):

數(shù)據(jù)不會(huì)離開終端設(shè)備,不用擔(dān)心用戶隱私被泄露
不需要網(wǎng)絡(luò)連接,無流量消耗,省錢又節(jié)能
對(duì)服務(wù)提供方來說,可以省去搭建后端服務(wù)器的花費(fèi)
7*24小時(shí)隨時(shí)可用,只要有電
Core ML
不同算法模型的運(yùn)行:輸入—>輸出

常用的一些基礎(chǔ)算法模型

對(duì)算法模型的運(yùn)行(輸入—>輸出)進(jìn)行抽象、規(guī)范化、通用化:Core ML Model

常用的 Core ML model:https://developer.apple.com/machine-learning

一般的Python算法模型轉(zhuǎn)換為 Core ML model(https://pypi.python.org/pypi/coremltools)

example:sklearn 中的LinearRegression,經(jīng)過訓(xùn)練后的模型使用coremltools轉(zhuǎn)換為MLMODEL

Vision Framework
Vision 提供的功能







還有物體移動(dòng)追蹤,矩形區(qū)域檢測(cè)等。
圖片、視頻檢測(cè):移動(dòng)設(shè)備 VS 服務(wù)器(前面提到過,類似)
個(gè)人隱私:更加私密、安全
資源消耗:免費(fèi),無數(shù)據(jù)傳輸
實(shí)時(shí)性:無延遲,立即運(yùn)行
Vision 的抽象方案


簡(jiǎn)單的使用Demo

開發(fā)流程
Core ML model 就是代碼

XCode 集成

接口調(diào)用

目前手上沒有可運(yùn)行ML Framework 的機(jī)器,本文只是理論層面的簡(jiǎn)介。運(yùn)行速度、資源消耗,模型準(zhǔn)確率對(duì)于ML的應(yīng)用來說非常重要。期待一些成熟、amazing的ML app 的誕生。
參考:Introducing Core ML? ?Vision Framework: Building on Core ML??Core ML in depth