WWDC17,18の機械学習(Core ML)のセッションに載っているサンプルコードのまとめ
iOSの機械学習(Core ML)をキャッチアップする際に参考にしたりビルドして実行した公式サンプルをまとめました。
WWDC19と20もまとめたいと思ってますがまだ追いついてません。最新に近づくに連れて機械学習のセッション数も増えていて追いつくのが大変そうです😅
手元の環境は次の通り
macOS 10.15.6
Xcode 11.6
iPhone 11 (iOS 13.6)
Machine Learning and Vision
これまでのWWDCの機械学習に関するセッション一覧はここから観れます。
Sample Code
Integrating a Core ML Model into Your App
1つ目は学習済みのモデルを使って火星の生息地(土地?)の価格を予測する空想のアプリ。3つのパラメータ(太陽電池パネルと温室の数、および生息地のロットサイズ)を使って推論している。実行結果はこちら。
コードはモデルを生成して、
let model = MarsHabitatPricer()
predictionを呼び出すシンプルなサンプル。
func updatePredictedPrice() {
func selectedRow(for feature: Feature) -> Int {
return pickerView.selectedRow(inComponent: feature.rawValue)
}
let solarPanels = pickerDataSource.value(for: selectedRow(for: .solarPanels), feature: .solarPanels)
let greenhouses = pickerDataSource.value(for: selectedRow(for: .greenhouses), feature: .greenhouses)
let size = pickerDataSource.value(for: selectedRow(for: .size), feature: .size)
guard let marsHabitatPricerOutput = try? model.prediction(solarPanels: solarPanels, greenhouses: greenhouses, size: size) else {
fatalError("Unexpected runtime error.")
}
let price = marsHabitatPricerOutput.price
priceLabel.text = priceFormatter.string(for: price)
}
Classifying Images with Vision and Core ML
数字を認識するアプリ、Xcode 11.6ではビルドに失敗するためスクリーンショットは無し。
Classifying Images with Vision and Core ML
一つ前のサンプルとタイトルは同じですが別物です。撮影した写真から物体を認識(クラス分類)するアプリ。VisionとCore MLの基本的な使い方が理解できる。シンプルな実装なので自作したモデルを試す際に流用したりしました。
MacBook Proを認識させてみました。
Detecting Objects in Still Images
カメラ撮影した静止画から物体の矩形、顔、テキスト、バーコードを認識するVisionを使ったアプリ。
実際にビルドして実行した画面はこちら。テキストの矩形認識。
こちらは顔の認識、パーツも認識されている。
Recognizing Objects in Live Capture
カメラの映像からリアルタイムで物体を検出するサンプル。
実際の実行画面はこちら、たまたま自宅にあったバナナを認識させた。
Training a Create ML Model to Classify Flowers
花の種類を推論するアプリ、花の画像のデータセット一式と学習済みのモデルが付属しているのでCreate MLを使って自分でモデルの学習を試すこともできる。
ビルドして実行した画面はこちら。カメラが静止すると推論が動作する作りになっていたり、データ管理の仕組みが作り込まれたりしていて色々と応用が効きそうなサンプルコード。
Tracking Multiple Objects or Rectangles in Video
ビデオ中の物体を認識して追跡するアプリ、手元のiPhone11/iOS 13.6ではビデオが正しい位置に表示されず正常に動作しなかった。気になるサンプルなので後で再確認する予定。
Tracking the User’s Face in Real Time
Visionを使ってインカメラの顔とパーツを検出するアプリ。
以上です。