その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

[2019年度版]ドラッグ&ドロップで機械学習のモデルがつくれる「Create ML」の使い方(macOS 10.15 Catalina) #WWDC19

ドラッグ&ドロップで超簡単にオリジナルの機械学習モデルがつくれてしまうCreate MLが大幅パワーアップしました。

新機能が増えたのと、使い方が若干変わった(より簡単になった)部分があるので、最新版として本記事をお送りします。

なお、NDAに配慮してスクリーンショットはAppleの公開資料および現行バージョンのもので代用することにします。

developer.apple.com

developer.apple.com

Create MLの起動方法

これまではCreate MLはまだ独立したアプリとして提供されておらず、Playgroundにコードを書いて実行してアプリケーションのUIにアクセスしていました。

しかしmacOS 10.15 Catalina / Xcode 11で提供される最新バージョンでは、独立したアプリ(Create ML.app)として提供されるようになりました。

Xcode 11のメニューから、

[Xcode] > [Open Developer Tool] > [Create ML]

を選択することで起動します。

使用方法:画像分類器(Image Classifier)

プロジェクトの作成

[File] > [New Project] を選択するとテンプレート選択画面が立ち上がるので、"Image Classifier"を選択します。

f:id:shu223:20190608104742j:plain
テンプレート選択画面。これはWWDCセッションスライド内にあったスクショだが、実際に試すとテンプレートはImage ClassifierとSound Classifierの2つしかなかった(2019.6.7現在)

データセットを用意する

どういうデータを用意するかですが、チュートリアルによると、

  • ラベルごとに最低でも10枚の画像
  • ラベルごとに枚数のバランスをとること(チーターは10枚、ゾウは1000枚、みたいなことをしない)

Use at least 10 images per label for the training set, but more is always better. Also, balance the number of images for each label. For example, don’t use 10 images for Cheetah and 1000 images for Elephant.

  • JPEGやPNG等、画像フォーマットはなんでもいい(UTIがpublic.imageに適合していれば)
  • サイズは揃ってなくてもOK
  • サイズもなんでもいいが、最低でも299x299ピクセルはあった方が良い

The images can be in any format whose uniform type identifer conforms to public.image. This includes common formats like JPEG and PNG. The images don’t have to be the same size as each other, nor do they have to be any particular size, although it’s best to use images that are at least 299x299 pixels.

あとは実際に推論を行うのと同じ状況で学習データも収集した方がいいとか、いろんな角度、ライティングの状況のデータがあった方がいい、ということが書かれています。

If possible, train with images collected in a way that’s similar to how images will be collected for prediction.

Provide images with variety. For example, use images that show animals from many different angles and in different lighting conditions. A classifier trained on nearly identical images for a given label tends to have poorer performance than one trained on a more diverse image set.

ラベルをフォルダ名にし、その配下にトレーニングデータ、テストデータを配置します。

f:id:shu223:20180606071547p:plain

学習&モデルの評価

データフォルダをドラッグ&ドロップします。

f:id:shu223:20190608110725p:plain

テスト(モデルの評価)もドラッグ&ドロップ。

f:id:shu223:20190608110811p:plain

オプショナルで、最大イテレーション回数を指定したり、トレーニングデータにノイズやブラーを付加したり、回転を加えたりといったパラメータを指定することもできます。

f:id:shu223:20190608110855p:plain

Playボタンをクリックすると、学習が開始されます。

f:id:shu223:20190608111115p:plain

学習が完了すると、スコアが表示されます。

f:id:shu223:20190608111212p:plain

f:id:shu223:20190608111423p:plain

モデルを保存する

学習したモデルを .mlmodel ファイルとして保存します。

f:id:shu223:20190608111515p:plain

アプリに組み込む

作成した .mlmodel ファイルをiOSアプリに組み込んで使用します。

実装方法はこちらの記事を参考にしてください。

qiita.com

また画像分類の .mlmodel ファイルをドラッグ&ドロップで試せるアプリをGitHubで公開しているので、こちらもぜひ活用してください。

github.com

使用方法:音声分類器(Sound Classifier)

(続く)

関連(SoundAnalysisについてちょっと書いてます):

qiita.com