前回の投稿で旅行記を書くと言ったのに、嘘をついてごめんなさい。笑
iOS11から新たに加わった「Core ML」を用いて画像認識アプリを作るべく、今回もコーヒーを題材にしました。
[swift 5.0対応] 20個以上のiOS12アプリ開発完全マスター人気講座
スターバックスのコーヒーパッケージを識別してスリーレターを表示する、というものです。
動いている動画です↓
今回はVision.Frameworkを用いて、mlmodelを作る方法で試してみました。それではご覧ください。
CONTENTS
開発手順
- 開発環境は
- iOS: 11.0
- XCode: 10.0
- MacOS: 10.13.6
です。
開発手順は以下の通りです。
- スタバのコーヒー豆のパッケージを1種類12枚、時計回りに回転させながら撮る
- Custom Vision Serviceを用いて学習させる
- mlmodelを出力する
- Microsoft社のGitHubからソースコードをcloneする
- mlmodelを自分のものに置き換える
- 実際に試してみる
今回はコーヒー豆の裏面(細かい文字がたくさん書いてある方)は撮影せずに、前面と側面のみを学習させました。
まず驚きだったのが、MicrosoftがiOSアプリの開発をしているということ。
Azureには普段からお世話になっているのでとても親近感が湧きました。笑
AzureさんがCustom Vision Serviceを作る際に「mlmodelも出力しよう」と思い立って、iOSアプリを開発したんだと思います。考察ですが。
mlmodelはドラッグ&ドロップして読み込みの部分を変えるだけ。簡単すぎる。
詳しくは「ネスケラボ」さんのCustom Vision Serviceを使ってお花判定カメラアプリを作るをご覧ください。
Custom Vision Service
Custom Vision Serviceとは、Microsoft社が開発したAPIです。
Azure Cognitive ServicesというAIを用いて主に画像認識などを行うことができるそうです
コーディングレスでGUIのみで学習モデルを作ることができる代物です。
Custom Vision Serviceでモデルを作る手順
早速モデルを作ってみましょう。
こちらからログインし、プロジェクトを追加します。
[NEW PROJECT]ボタンを押すと、下のようなポップが出るので、好きな名前と必要であれば説明を書きます。
僕は[Project Types]を[Classification]、[Classification Types]を[Multiclass]、[Domains]を[General(compact)]に設定しました。
Custom Vision Serviceでは、画像に対してタグ付けを行うことで学習することができます。
上のように、プレビューの時点で横向きになっていても、アップロードすると元の向きに戻るので、心配ないです。
こんな感じです。
左側にタグがたくさんついていますよね。これが全てのクラスです。
今回は1クラス12枚の画像で13種類のコーヒー豆を識別してみます。
全て画像を入れ終わったら学習させます。右上にある[Train]ボタンを押すだけで、学習が始まります。
左側にあるように、画像に対して閾値をつけることが出来るので、特殊な場合にも使えそうです。今回はそんなこともないので50%に設定しました。
Recallが100%の物もあるので、やっぱり写真の撮り方だったり枚数に問題があるのかもしれません。
学習が終わったものは[Export]ボタンから出力することができます。
出力形式がいくつかあるので、[Core ML]を選びます。
[Download]して終わりです。
画像のアップロードに少し(と言っても10秒くらい)かかるくらいで、とてもスムーズに終わりました。
MATLABの時もそうなのですが、学習させるのって短時間で終わるんですね。イメージと違う、、、笑
ソースコード
今回はソースコードが全て自分で作ったわけではないので、公開するのもどうかなと思いましたが、AzureさんのGitHubに複製転写自由、と書いてあったのでmlmodelのみを変えたものを公開します。
おわり
いかがでしたでしょうか。
今回はCustom Vision Serviceを使ってmlmodelを作り、既存のソースコードにくっつけて終わり、というなんともシンプルな内容でした。
コーディングもほとんど必要なく、とても楽しめました。
このあいだのWWDC2018であったように、AppleはCreate MLというものを出してXCodeの中でモデルを作れるようにしたので(Mac OS mojave以上)、もっと手軽にモデルが作れると期待が高まります。
それでは次回こそは旅行記です。お楽しみに。