Slide 1

Slide 1 text

ML Kitでカスタムモデルを 使うまで @farmanlab

Slide 2

Slide 2 text

ML Kit とは モバイルアプリ向けに google の機械学習機能 を組み込むことができる SDK for Firebase ref: https://developers.googleblog.com/2018/05/introducing-ml-kit.html

Slide 3

Slide 3 text

今日話さないこと ● 電車のこと ● 学習モデル自体のこと(自分もよく分かってない) ● キラキラ☆彡 したサクセスストーリー

Slide 4

Slide 4 text

デモ

Slide 5

Slide 5 text

早速動かそう!

Slide 6

Slide 6 text

サンプル用意されてる https://github.com/firebase/quickstart-andr oid/tree/master/mlkit

Slide 7

Slide 7 text

Slide 8

Slide 8 text

カスタムモデルを使うサンプルは googleが用意した モデルを使う例しかない

Slide 9

Slide 9 text

カスタムモデルを使うには TensorFlow Lite が必須 ref: https://www.tensorflow.org/mobile/tflite/ ここは ML Kitで 置き換え よく知られている あまり知られていない ・情報が少ない ・バージョン依存性が強い ・...

Slide 10

Slide 10 text

ML Kitの全体構成

Slide 11

Slide 11 text

ML Kitでカスタムモデルが動くまでの道のり

Slide 12

Slide 12 text

はじめに試したこと 量子化されたモデルを使う →モデルのサイズを減らすことができる

Slide 13

Slide 13 text

Caused by: com.google.firebase.ml.common.FirebaseMLException: Internal error has occurred when executing Firebase ML tasks at com.google.android.gms.internal.firebase_ml.zzgo.zza(Unknown Source:15) at com.google.android.gms.internal.firebase_ml.zzgp.run(Unknown Source:4) at android.os.Handler.handleCallback(Handler.java:789) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:169) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: java.lang.IllegalArgumentException: Cannot create interpreter: Didn't find custom op for name 'Dequantize' Didn't find custom op for name 'ReorderAxes' 逆量子化のオペレータがない

Slide 14

Slide 14 text

Slide 15

Slide 15 text

次に試したこと 量子化していないモデル(floatモデル) を使う

Slide 16

Slide 16 text

Caused by: java.lang.IllegalArgumentException: Failed to get input dimensions. 0-th input should have 602112 bytes, but found 150528 bytes. 想定するバイト数の1/4で入力されている

Slide 17

Slide 17 text

FirebaseModelInputOutputOptions 同じエラーが出る

Slide 18

Slide 18 text

Slide 19

Slide 19 text

結局どうやったら動いたか1 ・入力値の配列をbytebufferからfloatの多次元配列にした (FloatBufferはmlkit 16.0.0時点では未対応)

Slide 20

Slide 20 text

結局どうやったら動いたか2 ・画像データの標準化はMLKitで よしなにしてくれないので 自前で計算した

Slide 21

Slide 21 text

ここが辛いよML Kit ・機械学習モデルの仕様を  モバイルエンジニアが把握する必要がある ・エラーが出るとモデルの変換ミスなのか、  アプリ側の実装ミスなのか分かりづらい (MLKitの内部エラーは難読化されてて死ぬ

Slide 22

Slide 22 text

ここが凄いよML Kit ・ローカルで動作 ・Firebaseとの連携で  モデルの更新が簡単にできる ・カスタムモデル以外でも  かなりいろんなことができる

Slide 23

Slide 23 text

現状とこれから まだかなり荒い状態で世に送り出されている ・情報がないし、こんなに苦戦すると思わなかったレベル ・ML Kit をサービスで使っていきましょう、はまだ早い ・ただし期待が持てる点は多い  マルチプラットフォーム、サーバで使用、軽量モデル変換 (参考)現時点では Apple の方が進んでいそう Create ML (https://developer.apple.com/documentation/create_ml) 端末の組み込みモデルから軽量(数十[KB])なモデルも作れる

Slide 24

Slide 24 text

ご清聴ありがとうございました!