はじめに
最近、巷では機械学習がモバイル開発でも流行ってきてますね。
しかし、同時に機械学習は色々と大変な印象も受けるものではないでしょうか。
なのでモバイル開発でも簡単に使えそうな昨今の機械学習の機能を試してみようと思いました!
機械学習とは
- データから半服的に学習し、そこに潜むパターン(特徴)をみつ出すこと
- そして、実際に使うときには、見つけ出したパターン(特徴)をもとに、とある問題を解決すること。
とよくいわれます。
機械学習での悩みどころ その1
- 機械学習モデル
- 訓練するための教師データを用意すること。
- 訓練する作業自体が大変な時があること。
- 交差検証などを使った機械学習モデル
- 精度自体の確認作業。
- 満足のゆく精度が出るまでに繰り返す作業。
などの大変さがあります。
機械学習での悩みどころ その2
以下のような金銭面での課題が場合によっては生じます。
- 高額なマシンスペックを用意する必要性
- 高額なクラウドを借りて、その上で試す必要性
限られた時間でも手軽に試せる方法がないか知りたい!
- 業務で使用していた Firebase のコンソールで、ある日突然、 MLKit という存在を知る。
MLKit?
MLKit とは
- Google が提供する既に学習済みのモデルを使って端末上で機械学習の「推薦」を
行うことができるフレームワークです。
「推薦」とは?
- 人はそれが犬か猫かと判断するには自分の観察と経験を利用します。
- 人の観察と経験は、機械学習でいう既に学習されたモデルと似てます。
- そして最終的には、その観察と経験をもとに犬か猫かと判断します。
- 機械の場合は、犬と猫のデータを解析することで、人間と同じような観察と経験を得られます。
- 機械もその観察と経験(判断材料)を使って、それが犬か猫かを判断する。そのプロセス自体が「推論」と言えます。
推奨される実行環境等です。
項目 | iOS | Android |
---|---|---|
実行環境 | iOS 8.0以降 | Android 4.0以降 |
開発環境 | macOS 10.13.4以降 | macOS 10.10 または10.13以降、 Windows7以降(32/64-bit) |
開発ツール | Xcode 10以降 | Android Studio 3以降 |
プログラミング言語 | Swift 、 Objective-C のいずれか | Java |
MLKit の際立った特徴
- iOS 、 Android の両方で機械学習の推論を実行ができる。
- 「オンデバイス API 」 と 「オンクラウド API 」 での実効が選択ができる。
- Google が提供するツールにより、既存の 「 Tensorflow モデル」を「 TensorflowLite モデル」に変換して モバイルでの実行も可能になる。
などがあります。
学習済みモデルあります!
Vision
- Vision は、画像分類、顔検出などの、一般的な機械学習の機能をすぐに利用できる MLKit のフレームワークです。
- 既に学習済みのモデルのため、推論モデルを用意する必要はありません!
Vision には、以下のような機能があります
- 画像分類
- 顔検出
- バーコード認識
- 矩形認識
- ランドマーク認識
- テキスト認識
オンデバイス or オンクラウド
使用する機能にもよりますが、
- オンデバイス(ローカル)での実行
- オンクラウド(REST)からの実行
が選択出来ます!
以下、その対応表ですが、見ての通り、現在は「画像分類」と「テキスト認識」だけが、両方に対応してますね。
項目 | オンデバイス | オンクラウド | 推論方法 |
---|---|---|---|
画像分類 | ○ | ○ | ローカル&クラウドの両方から可能 |
顔検出 | ○ | – | ローカルでの推論のみ実行可能 |
バーコード認識 | ○ | – | ローカルでの推論のみ実行可能 |
ランドマーク認識 | – | ○ | クラウドからの推論のみ可能 |
テキスト認識 | ○ | ○ | ローカル&クラウドの両方から可能 |
カスタムモデル | ○ | – | ローカルでのみ実行可能 |
画像分類
画像分類の例です。
- テニスボールとラケットを検出し、その精度スコアも表示します。
顔検出
顔検出の例です。
- 顔の各パーツ、笑顔、片方の目が開いてるかどうかから顔の追跡など、細かい検出の指定ができてますね。
バーコード認識
バーコード認識の例です。
- たくさんのバーコード形式に対応します。
- もちろん、それらを自動的に識別します。
- 特定のフォーマットだけに制限させるも可能で、そうすることでスキャン速度も向上します。
- URL 、電子メールアドレス、 WiFi 情報などの構造化データを自動的に抽出して解析します。
検出できるバーコード形式 |
---|
Code 39、 Code 93、 Code 128 |
ITF |
EAN-8、 EAN-13 |
UPC-A 、 UPC-E |
QR Code |
PDF417 |
Data Matrix |
Aztec |
ランドマーク認識
- 塔、記念碑などの地域を特徴づける目印を認識する。
- その名前だけでなく、その位置情報も合わせて検出できる
テキスト認識
- テキストの領域を認識
- さまざまな言語と特殊文字を認識
- フォント、オブジェクト、色に関係なくテキストを認識
オンデバイスとオンクラウドの違い
- オンデバイスの方が高速だが、認識できるものが減る。
- オンクラウドは認識できるものが増えるが、利用内容に応じて費用が発生します。
サンプル動画
まとめ
- オンデバイスの方はローカルで実行出来て高速&無料。その代わり、認識できるものが減る。
- オンクラウドは認識できるものが増えるが、利用内容に応じて費用が発生する。
- MLKit は、 Android 、 iOS でしかまだ対応はしていないが、今後、 Unity などにも対応すれば、社内のシステムなどにも役立てそうな感じはしました。
実際に Google も今後機能を増やしていくと言っています!