LoginSignup
5
2

More than 5 years have passed since last update.

Custom Vision Service + CoreMLで寿司分類

Last updated at Posted at 2017-11-16

はじめに

とあるコンテストに向けて後輩と寿司判別するアプリを作りました。
(後輩が特に頑張ってくれて、素材作成は別の後輩に頑張ってもらいました。)

このアプリ実現のために使ったもののノウハウ「Custom Vision Serviceを用いてcoreML用のmlmodelを作成、iOSで推論を行い結果を出力させる」をまとめたかったので、ここにまとめます。

学習データの取得

私たちの所属する団体のメンバーが某大手回転寿司チェーン店に行ったタイミングで寿司の写真を撮ってもらいました。
開発メンバーとも食べに行って撮ったりもしました。
それだけでは勿論足りないので、Webからも画像を収集しました。
そこらへんの話は本件と関係が薄いのでここには書きませんが、ggると沢山情報が出てきます。

Custom Vision Serviceで寿司を学習

Custom Vision Service - Microsoft Azure
こちらにアクセスし「はじめる」を押して、サインインします。

スクリーンショット 2017-11-15 17.31.14.png
するとこんな感じの画面に遷移するかと思います。
私のやつは既にプロジェクトがありますが、初期状態ではまっさらだと思います。
ここで「New Project」をクリック。

スクリーンショット 2017-11-15 17.35.44.png
このように適当な情報を入れてプロジェクトを作ります。
このときDomainsの項目はGeneral(compact)を選択しておいてください。

スクリーンショット 2017-11-15 17.38.57.png
するとこのような画面に遷移します。
後は真ん中の「Add images」ボタンを押して、画像を追加していくだけです。
本当に簡単ですね。ビックリします。

スクリーンショット 2017-11-15 17.42.01.png
例えばマグロの握りを追加するときはこんな感じで画像+タグをセットしてUploadボタンを押すだけです。

スクリーンショット 2017-11-15 17.44.05.png
無事に終了するとこんな感じに飯テロ画面が完成します。
早くこんな食べ物を沢山食べられる大人になりたいと思いました。

無料枠で学習できる画像の枚数が1000枚だったので、今回は20種類の寿司ネタに対して50枚ずつ画像を集めました。
(今考えると少ない気がするけれど、そこは今回置いておきます。)

全ての画像をタグ付きでアップロードができれば、後は上にある緑色の「Train」を押すと学習が始まります。

学習が終わったらパフォーマンスを確認してみましょう。

スクリーンショット 2017-11-15 17.50.35.png
再現率が若干悪いですが、あれだけの枚数でここまでの精度がでました。
本当にすごいですね。

後は、このPERFORMANCEタブの「Export」を押すと

スクリーンショット 2017-11-15 17.55.40.png
こんな感じで、CoreMLのmlmodelとして学習モデルを吐き出せます。

CoreMLで推論

こちらの記事がとてもわかりやすくて参考にさせてもらいました。
書いてある手順に従って、モデルを読み込み、推論のプログラムを自分たちのアプリに上手く組み合わせることでコンテストに向けたアプリを作りました。
(この記事のことを簡単に試すのなら上記の記事のプログラムだけで動くと思います。)

実行結果

上記の記事のプログラムで作成したモデルから無事に寿司ネタを推論ができているかの確認です。ezgif-5-991de5dd59.gif

上手くできていそうですね。

まとめ

高度な技術の話がわからなくても、世の中にあるものを使うだけで気軽にそこそこの精度の寿司分類ができました。
中で何が起こっているのかがよくわからないのは怖いと思うので、ちゃんと技術的な勉強もおいおいやっていきたいなと思いました。

5
2
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
5
2