少し前の話なんですが、Appleの社員の人と話す機会があって、「開発でMac使ってるならXcodeで簡単に機械学習とか試せるからやってみてよ」と言われたからとりあえずやってみたらホントにメチャクチャ簡単に実装できたので備忘録として書き留めておこうと思います。
まずは準備するもの
- XcodeをインストールしたMac(とりあえず今回の話はこれがないと進まない)
- ネット上に転がっているピカチュウの画像50枚くらい
- ネット上に転がっているピカチュウ以外のポケモンの画像50枚くらい
- iPhone(できたアプリをインストールして遊ぶ用)
以上のものができたらLet’s try!!
まずは集めた画像をテストデータとトレーニングデータに分けます。フォルダの階層は下のようになっていると使いやすいと思います。
次はApple公式のサンプルコードをダウンロードします。ダウンロードしたら適当なフォルダ作って保存しておく。
保存したサンプルをXcodeで開く
メニューバーからXcode → Open Developer Tool → Create ML の順に開いていく。
Create MLを開いたら適当なフォルダを指定する(さっきサンプルプログラムを保存したフォルダでOK)テンプレートはImage Classificationを選択する。プロジェクトの名前は適当につけてcreateボタンを押す
下の画面が出てきたらTraining Dataにピカチュウのトレーニングデータのフォルダとピカチュウ以外のポケモンのトレーニングデータのフォルダをそれぞれ追加する。同じようにTesting Dataにもピカチュウのテストデータのフォルダとピカチュウ以外のポケモンのテストデータのフォルダを追加する。
追加し終わったら、左上のTrainボタンを押す。
ここまででなんと画像判別モデルの作成は完了。なにこれ?pythonいじったりするより全然簡単じゃん。作った画像判別モデルの精度も一応確認してみましょう。モデルの精度は自動的にテストデータを使って判定してくれてます。
結果はcorrect(正解)31枚、incorrect(不正解)2枚。不正解の内訳はピカチュウをその他のポケモンと誤判定したみたいです。トレーニングデータも同じような枚数でやったのでこれくらいの精度なら結構良い方ではないですかね。
ここからは作った画像判別モデルをサンプルプログラムに適用していきます。
まずは作った画像判別モデルを保存します。
次にこの画像判別モデルをサンプルプログラムにModelsというディレクトリに保存します。(これもドラッグ&ドロップでOK)
最後にImagePredictor.swiftのファイル内にあるモデル名を今回作ったモデル名に変えればOK。
これで作業は終了です。どうですか?メチャクチャ簡単じゃないですか?
あとはサンプルプログラムをビルドしてiPhoneにインストールして遊んでみてください。カメラで撮影したものがピカチュウかどうかを判定してくれます。
コメント