9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Core ML を使ってみた

Last updated at Posted at 2017-09-27

Core ML の基本部分を使ってみたので公開します。

Core ML とは

まず Core ML は WWDC 2017 で発表されたフレームワークです。
このフレームワークを使うことで、学習済みの機械学習モデルを macOS / iOS / watchOS / tvOS で簡単に利用できるようになります。
すでに学習済みのモデルを使用するためサーバーへのアクセスは不要で、デバイスのスタンドアロンで使えて、かつプライバシも守られるというのがメリットです。

対応している機械学習ライブラリも、 Caffe / Keras / XGBoost / scikit learn / turi / LIBSVM など様々です。

実装サンプル

Xcode9 beta が必要になりますので、インストールします。(要 Developer 登録)
Xcode9 でモデルを組み込みたいプロジェクトを開いて、すでにある学習済みモデル(.mlmodelファイル)を Xcode 上へのドラッグ&ドロップでプロジェクトに追加します。
(モデルのサンプルが開発者向けのサイトで4つ公開されています。いずれも画像解析用のモデルです。※2017/6/21時点)

この時点で、Xcode が .mlmodel ファイルを解釈して、モデルを使うためのクラスを自動生成してくれます。
あとはこのクラスを使うだけです。

使い方をコードで説明します。

swift
let model = Resnet50() // モデルを使うためのクラスを生成
 
func prediction(image: UIImage) {
    // モデルへの入力形式に変換
    guard let buffer = buffer(from: image) else { return }

    // image をモデルに入力して結果を受け取る
    guard let scene = try? model.prediction(image: buffer) else {
        fatalError("Unexpected runtime error.")
    }
     
    // ラベルに出力
    resultLabel.text = scene.classLabel
}

まずは、モデルを使うためのクラスを生成、インスタンス化します。
このモデルが受け取る形式が CVPixelBuffer なので、UIImage をこの形式に変換します。
( buffer() は別途定義しているメソッド)

あとは、変換した CVPixelBuffer を model に食わせてあげると、結果が受け取れます。
最後に結果を出力します。

モデルによって出力と入力の型が違うので、多少実装に差は出てきますが、大まかな流れはこんな感じです。
本当に簡単に機械学習モデルを使うことができました。

.mlmodel ファイルの生成

.mlmodel ファイルを生成するために「Core ML Tools」というものが提供されています。
これは python 製のオープンソースソフトウェアで前記した機械学習ライブラリのファイルから、.mlmodel ファイルを生成するものです。

Appel のセッションでデモされていましたが、こちらも数行のコードを書くだけで動作していました。

所感

いままでも、iOSデバイスなどで機械学習モデルを利用することはできたのですが、
Core ML の発表で、iOS Developer にとっても機械学習がグッと身近なものになっていくと思います。

iOS11 以降で iPhone での体験がより良いものになっていく予感を感じました。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?