淺談 Core ML : 從官方範例學習圖像識別 App

KAI
Goons
Published in
5 min readJun 18, 2019

在這篇文章裡,我們使用 Apple Developer ARKit Sample Code — Recognizing and Labeling Arbitrary Objects,接下來會認識到如何建立一個機器學習的資料模型,以及如何直接使用範例程式執行自己訓練的資料模型。

Core ML 是 Apple 在 WWDC 2017 推出的一個機器學習框架,主打的是你不需要深入的了解關於神經網絡(Neural Network)以及機器學習(Machine Learning)的相關知識,也能輕鬆整合至自己的 App。

什麼是機器學習?

機器學習是給予電腦可以在不明確撰寫程式的情況下學習能力的應用。而一個完成訓練的模型便是指將資料經由演算法結合後的成果。

在開始建立模型之前,先了解一下 Create ML

Create ML 是蘋果開發的、生成機器學習模型的框架。它有三個特點:使用 Swift 進行操作;用 Playground 訓練和建立模型;在 Mac OS 上完成所有工作,可以說是集原生態和便攜性於一體。

使用 Create ML 唯一需要做的,就是準備很多很多的數據資料(文字或圖片)、寫幾行程式碼,然後就可以跑 Playground 開始訓練模型了!

開始建立一個 ML 模型吧

打開你的 Xcode 接著新增一個 macOS Playground,記得打開 Assistant editor 確保你能看到右邊的 LiveView

import CreateMLUIlet builder = MLImageClassifierBuilder().showInLiveView()

接下來你會在右邊的 LiveView 看到如下圖的視窗,只要把準備好的數據集拖曳進去就會開始訓練模型了!

這裡我們在 console 可以看到目前進行到第幾個項目、耗時、完成率

當一切準備就緒時,你可以選擇拿另一組數據集來驗證這次的訓練結果,也可以選擇直接存檔成模型直接使用。

接下來回到你的 Xcode,並打開 Apple sample code,程式碼都已經準備就緒了,你需要做的事是把 ML 模型放進專案內,接著請你在 ViewController.swift 找到下面這段程式碼,並將 #Your Model Name# 改成你模型的名稱

private lazy var classificationRequest: VNCoreMLRequest = {do {// Instantiate the model from its generated Swift class.let model = try VNCoreMLModel(for: #Your Model Name#().model)let request = VNCoreMLRequest(model: model, completionHandler: { [weak self] request, error inself?.processClassifications(for: request, error: error)})// Crop input images to square area at center, matching the way the ML model was trained.request.imageCropAndScaleOption = .centerCrop// Use CPU for Vision processing to ensure that there are adequate GPU resources for rendering.request.usesCPUOnly = truereturn request} catch {fatalError("Failed to load Vision ML model: \(error)")}}()

當你執行在實機上後,將鏡頭照向物體時畫面上即會告訴你現在這個物體是什麼,還有預估的準確率,接下來你可以試著點擊一下螢幕,會有 ARKit 的物件將這項物體的名稱產生在畫面上呢!

我是果思設計的 iOS 工程師 KAI,我們專注在 App 設計與 App 開發,希望文章對各位有幫助!非常期待在留言區與大家討論、吸收更多觀點:)

--

--