您的位置:首頁>科技>正文

暴力科技:蘋果新推出的CoreML怎麼用?有哪些bug?這裡有一份教程奧

約伯斯

昨天, 年僅18歲的iOS app開發者Alex Wulff在Hackrnoon上發佈了一篇教程, 手把手教你如何將蘋果在WWDC上發佈的眾多API應用到你的電腦上。 量子位全文編譯如下:

△ Alex Wulff

iOS 11真的來了。

蘋果在iOS 11裡引入了本地機器學習和機器視覺框架, 承諾這將促進app和遊戲的一大飛躍性進步, 也解鎖了一大堆可能性。

目前機器學習解決方案已經可以在雲端實現了。 但這些系統不僅需要持續連網, 經常在iOS上有明顯的延遲, 也為敏感性資料帶來了安全風險。

有些App在用協力廠商Swift AI系統, 但是這些框架很難佔據主流開發社區。

你也想知道如何將蘋果新發佈的API集合到你的電腦上?其實比你想像的簡單。

https://developer.apple.com/download/

下面這個是我編寫的一個演示iOS中新引入的機器學習功能的小樣例。

Github連結:

https://github.com/AlexFWulff/Machine-Learning-Demo-iOS

我的樣例可以為輸入的圖片進行分類, 所有計算都是在含Core ML和視覺框架的設備上完成的。

這個專案內容不多, 其中, 希望你能注意GoogLeNetPlaces.mlmodel。 這是幾年前谷歌研究人員訓練的機器視覺模型, 蘋果的新機器學習API允許開發者在他們的iOS app中輕鬆地訪問這些標準化的模型。 當你把.mlmodel格式的檔拖進App中時, Xcode會為它自動創建Swift wrapper。 一些這樣的模型檔大小可超幾百兆。

不幸的是, Core ML檔離“人類可讀”還很遠, 它們只是大量位元組的集合,

告訴設備如何處理輸入的“神經元”。 模型越複雜, 檔就越大。

蘋果提供四種不同的訓練模型。 你可以在這個連結中找到這些模型:

https://developer.apple.com/machine-learning/

蘋果的Core ML Tools Python套裝軟體允許開發人員將現有的模型轉化為iOS可讀取的Core ML格式。 希望格式對你來說沒有限制, 並且期待你能掌握各種用例的訓練模型。

△ 眾多bug之一:即使你的專案正在被編寫, 但編輯器仍然認為Swift wrapper不存在

接下來, 打開ViewController檔。 第一個代碼片段(見上圖)只是簡單嘗試創建一個變數來存儲你所選模型的視覺展示。 即使在這一節中出現了錯誤, 專案仍能被編輯。 我在Xcode 9測試版中發現了不少bug, 這是其中一個。

為了支援Core ML模型, 蘋果也推出了自己的機器視覺API, 並命名為Vision。 Vision包含了許多不同的機器視覺模型, 它們可以檢測人臉、條碼、文本等多種類型, 還提供基於圖像的Core ML模型wrapper。 例如, 專案中的模型可以以圖片作為輸入, 並且返回一個描述性字串作為輸出。 對於非基於圖像的模型, 蘋果已經創建了小型示例專案演示它的使用方法, 它獨立於Vision,只依賴Core ML。

你也需要這個示例專案?給你連結:()

https://developer.apple.com/documentation/coreml/integrating_a_core_ml_model_into_your_app

接下來該建立和處理請求了。 你可以在專案導航器中看到嘗試此模型的不同圖像。 用其他任何檔案名替代“airport”字串, 建立並且運行專案, 看看如何將結果輸出到控制台更改。

最後一個片段代碼只接受請求的結果並會將它列印出來。 在這個Demo中, 我沒有設置出錯時提醒之類的機制, 所以一旦出現了錯誤, 整個程式就會崩潰。

另一個影響專案的大bug是將檔拖放帶專案導航器中發生的。 bug修復前, 不要在Xcode 9中嘗試這個功能, 會因為它將給依賴鏈帶去巨大的影響。 你只需在Xcode的早期版本中打開Xcode專案, 如果有需要的話, 選擇copy項, 並確認。

最後一個bug可能會在你運行項目的時候突然出現。如果模擬器無法啟動,你需要先退出模擬器和Xcode。

以上就是我帶來的iOS 11中輕鬆使用機器學習的示例專案。蘋果連結中的其他三個模型應該都與VNCoreMLRequest相容。

最後一個bug可能會在你運行項目的時候突然出現。如果模擬器無法啟動,你需要先退出模擬器和Xcode。

以上就是我帶來的iOS 11中輕鬆使用機器學習的示例專案。蘋果連結中的其他三個模型應該都與VNCoreMLRequest相容。

Next Article
喜欢就按个赞吧!!!
点击关闭提示