當前位置:
首頁 > 新聞 > 如何使用Swift在iOS 11中加入原生機器學習視覺模型

如何使用Swift在iOS 11中加入原生機器學習視覺模型

選自Hackernoon

機器之心編譯

作者:Alex Wulff

參與:侯韻楚、李澤南


隨著 WWDC 大會上 iOS 11 的發布,蘋果終於推出了原生機器學習和機器視覺框架,由此開啟了許多嶄新的可能性,使所有性質的應用程序和遊戲有望取得顯著進步,本文作者 Alex Wulff 將對在 iOS 11 中加入機器學習模型的方法進行簡要介紹。

機器學習解決方案在雲端的應用已有一些時日,但這類系統需要不間斷的網路連接,並且很明顯,它通常在 iOS 上會存在顯著延遲,也為敏感數據帶來了安全隱患。一些第三方的 Swift AI 系統已開始在幾個應用程序中佔據一席之地,但這類框架從未成為開發上的主流。隨著蘋果在 2017 年的全球開發者大會(Worldwide Developers Conference,WWDC)的最新發布,你很可能會發現所鍾愛的幾款應用程序都出現了與機器學習相關的更新。

想知道如何將蘋果的新 API 集成到自己的應用程序中嗎?這可比想像中更容易。

如何使用Swift在iOS 11中加入原生機器學習視覺模型

首先你需要下載 Xcode 9 測試版,這是下載地址:https://developer.apple.com/download/。請注意,這個文件非常大,下載耗時略長。此外,這個早期測試版尚不成熟,還存在許多問題(有些將在下文予以討論)。你可以邊下載 Xcode 邊讀完這篇文章,以便進行下載後的操作。

你可以查看我為本文創建的 GitHub repo 並下載 Xcode 項目:https://github.com/AlexFWulff/Machine-Learning-Demo-iOS

下圖為示例結果。

如何使用Swift在iOS 11中加入原生機器學習視覺模型

我的示例項目將會以一幅圖像作為輸入,並得出可能的分類及其各自的信任度。所有計算都是在蘋果新推出的含 Core ML 和機器學習視覺框架的設備上完成的。

這個項目內容很少。請你留意一個文件:GoogLeNetPlaces.mlmodel。它是幾年前由 Google 研究人員所創建的經過訓練的機器視覺模型。蘋果公司新的機器學習 API 使開發人員得以輕鬆訪問 iOS 應用程序中的標準化模型。當你將.mlmodel 文件拖動至應用程序中時,Xcode 便會為其自動創建 Swift 封裝。一些模型文件的大小可以達到幾百 Mb。

但很不幸,Core ML 文件甚至不能如.plist 或.storyboard 一樣達到人類可讀的程度,它們僅僅是告訴設備如何將處理輸入的「神經元」進行排列的一大堆位元組。模型越複雜,其尺寸便越大。

如何使用Swift在iOS 11中加入原生機器學習視覺模型

蘋果收集了四種不同的已訓練模型以供使用,你可以通過網址 https://developer.apple.com/machine-learning/得到它們。蘋果的 Core ML 工具的 Python 包使開發人員能夠將預先存在的模型轉換為 iOS 可訪問的 Core ML 格式。隨著格式的增多,在未來人們應該能為各種用例得到經過訓練的模型。

如何使用Swift在iOS 11中加入原生機器學習視覺模型

這其中存在一個 bug:即使項目可編寫,編輯器仍會認為不存在 Swift 包裝器。

接下來打開 ViewController 文件。第一個代碼塊(如上圖所示)僅僅是嘗試創建一個變數來存儲所選模型的 Vision 表示。即使在本節出現了錯誤,這個項目仍需進行編寫。這是我在使用 Xcode 9 測試版時,短時間內所發現的許多 bug 之一。

如何使用Swift在iOS 11中加入原生機器學習視覺模型

蘋果公司還憑藉 Core ML 模型推出了自己的機器視覺 API,並命名為 Vision。Vision 包含了許多不同的機器視覺模型,它們可以檢測人臉、條形碼、文本等多種類型,還為基於圖像的 Core ML 模型提供了包裝器。其中一些包裝器專屬於特定類型的模型。如項目中的模型可以將圖片作為輸入,並返回一個描述性字元串作為輸出。由於這種情況很常見,蘋果已經為其添加了視覺包裝器。而對於不基於圖像的模型,蘋果已經創建了小型的示例項目來演示使用方法,它完全獨立於 Vision 之外,僅僅依賴 Core ML。

下一個代碼塊會建立並處理請求。在項目導航器中,你應當能看到用於實驗該模型的各種不同圖像。將字元串「airport」替換為任一其他圖像的名稱,對項目進行創建並運行,而後查看輸出到控制台的結果是如何更改的。

奇怪的是,解析度較低的圖像似乎對其最可能的分類具有最高的信任度。我無法解釋這種情況出現的原因。如果有讀者了解其中的原因,請在下面留言。我真的很費解!

如何使用Swift在iOS 11中加入原生機器學習視覺模型

最後一個代碼塊只需接受請求的結果並將其列印出來。在這個演示中,我沒有設置任何「預防差錯」的措施,所以一旦出現問題,整個應用程序便會崩潰。

另一個對項目有所影響的大 bug,會在將文件拖放到項目導航器中時發生。在 bug 修復之前,請不要在 Xcode 9 中嘗試這個動作,因為它會對依賴鏈產生巨大影響。你只需在 Xcode 的早期版本中打開 Xcode 項目,必要時選擇複製項,而後點擊確認即可。

如何使用Swift在iOS 11中加入原生機器學習視覺模型

最後一個可能有所影響的 bug 有時會在運行項目時出現。若模擬器無法啟動,退出模擬器和 Xcode 即可。它們運行一段時間後,你需要進行一次同樣的操作。盡情享受模擬器的嶄新外觀與體驗,以及對 iOS 11 的少許預覽吧!

希望我的示例項目對「如何輕鬆在 iOS 11 中實現機器學習」進行了成功概述。只需拖入一個模型並對結果加以處理,你就離成功不遠了!蘋果所鏈接的其他三個模型應當與同一個 VNCoreMLRequest 兼容,因為它們都以圖像作為輸入,並輸出分類信息。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

如何用進化方法優化大規模圖像分類神經網路?
百度提出互動式學習方法:讓人工智慧代理在對話中學習說話
谷歌移動端神經網路架構MobileNet的CoreML實現

TAG:機器之心 |

您可能感興趣

Innoviz CEO Omer Keilaf:激光雷達應該重視機器視覺
Innoviz CEO Omer Keilaf:激光雷達應該重視機器視覺|2018全球智能駕駛峰會
微軟Edge在iPhone和iPad上加入視覺搜索服務
First Sin的學者Dark Souls II不兼容 2 MOD更新視覺效果
Publik Office品牌視覺形象設計
IOS 11 Human Interface Guidelines-視覺設計指南
「SM Entertainment」品牌視覺形象設計
NIPS 2018|Spotlight論文:憑藉幻想的目標進行視覺強化學習
Boston Dynamics 收購 3D 視覺技術創業公司 Kinema Systems
Intel推出基於Movidius和Arria FPGA的視覺加速產品,簡化邊緣計算設備
ImmerVision將在2018年世界移動大會上展示AI-Ready視覺技術
原Movidius CEO Remi El-Ouazzane:深度了解終端視覺處理器VPU
芝加哥美術館視覺盛宴!OFF-WHITE x Louis Vuitton 能炒到幾位數?
視覺利器 「顏」色俱佳 ThinkVision P32u評測
2D 視覺藝術,Herschel Supply與Joshua Vides 發布聯名系列
TCL XESS再亮相 「新物種」Living Window衝擊視覺
SyncThink為VR Tools套件添加動態視覺訓練
用PyTorch搞定GluonCV預訓練模型,這個計算機視覺庫真的很好用
6.5寸屏:蘋果全力研發iPhone X Plus 視覺震撼
Synopsys助力瑞薩電子R-Car V3H SoC的加速開發,實現尖端的計算機視覺技術