FRMSKI開発ブログ

プログラミング、UI / UX、仕事、読書のことなど、日々の記録を綴ります

【CreateML入門①】画像認識モデルを作ってみる

CreateMLとは

 Create MLを使用すれば、SwiftやmacOSのplaygroundsといったお馴染みのツールでカスタムの機械学習モデルを作成し訓練することができます。モデルを訓練して、画像の認識、テキスト認識、数値間の関係の検索など、様々なタスクを実行できます。

f:id:frmski:20181023161436p:plain:w350

 CreateMLでは、代表的なサンプルを表示してパターンを認識するようにモデルを訓練します。
 たとえば、犬を認識するようにモデルを訓練するには、さまざまな犬の画像をたくさん表示させます。モデルを訓練した後は、新しく用意した犬のデータをテストし、タスクをどれ程遂行したかを評価します。モデルのパフォーマンスが十分であれば、Core MLを使ってアプリに組み込むことが出来ます。

画像認識モデルを作る① - データを用意する

 まず、分類のために「訓練」と「評価」に使用するデータを準備します。各ラベルの画像の約80%をトレーニングデータセットにします。残りの画像からテストデータセットを作成します。特定の画像がこれらの2つのセットのいずれかにのみ表示されることを確認してください。
 次に、MLImageClassifier.DataSourceタイプのいずれかと互換性があるように、データをディスクに整理します。Training DataというフォルダとTesting Dataというフォルダを作成します。各フォルダで、ラベルを名前として使用してサブフォルダを作成します。次に、各データセットの適切なサブフォルダに画像を並べ替えます。

 f:id:frmski:20181023162813p:plain:w300

【※注意点】

  • 画像ファイルに特定の方法で名前を付ける必要はなく、メタデータを追加する必要もありません。ラベルが付いたフォルダに入れるだけです。各ラベルのイメージの数は均等に用意してください。

  • 画像は、uniform型識別子がpublic.imageに準拠している任意の形式にすることができます。これには、JPEGPNGなどの一般的な形式が含まれます。

  • 画像は、同じサイズである必要はなく、特定のサイズである必要もありませんが、少なくとも299x299ピクセルの画像を使用することが推奨されています。

  • 多様な画像を提供することも重要です。さまざまな角度から、さまざまな照明条件で動物を表示する画像を使用します。

画像認識モデルを作る② - Playgroundsで学習する

 Xcodeを起動して新規Playgroundsプロジェクト(macOSのsingle view)を作成し下記コードを記入してください。

// Import CreateMLUI to train the image classifier in the UI.
// For other Create ML tasks, import CreateML instead.
import CreateMLUI 

let builder = MLImageClassifierBuilder()
builder.showInLiveView()

「Drag Images and Begin Training」に画像をドラッグドロップして訓練を開始。訓練が終了するまでインディケーターが出るので待機します。

f:id:frmski:20181023170840p:plain:w300

 訓練が終了したらテスト用の画像をドラッグしてテストします。認識結果がconfidenceというパーセンテージのパラメーターで表示されます。

f:id:frmski:20181023172528p:plain:w300

 問題なければmlmodelを出力して完了です。

f:id:frmski:20181023172614p:plain:w300

まとめ

画像認識のモデル作成は以上です。mlmodelを組み込むことで様々なアプリに応用できそうですね。playgroundsを使って遊ぶように機械学習が学べるので入門としてもおすすめです。