Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MLKitでカスタムモデルを使う

0900af6cd3bf73093084da7f137f0ced?s=47 farmanlab
August 21, 2018

 MLKitでカスタムモデルを使う

MLKitでカスタムモデルを使うためのノウハウを話します

0900af6cd3bf73093084da7f137f0ced?s=128

farmanlab

August 21, 2018
Tweet

More Decks by farmanlab

Other Decks in Programming

Transcript

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

  2. ML Kit とは モバイルアプリ向けに google の機械学習機能 を組み込むことができる SDK for Firebase

    ref: https://developers.googleblog.com/2018/05/introducing-ml-kit.html
  3. 今日話さないこと • 電車のこと • 学習モデル自体のこと(自分もよく分かってない) • キラキラ☆彡 したサクセスストーリー

  4. デモ

  5. 早速動かそう!

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

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

  8. カスタムモデルを使うには TensorFlow Lite が必須 ref: https://www.tensorflow.org/mobile/tflite/ ここは ML Kitで 置き換え

    よく知られている あまり知られていない ・情報が少ない ・バージョン依存性が強い ・...
  9. ML Kitの全体構成

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

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

  12. 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' 逆量子化のオペレータがない
  13. 次に試したこと 量子化していないモデル(floatモデル) を使う

  14. Caused by: java.lang.IllegalArgumentException: Failed to get input dimensions. 0-th input

    should have 602112 bytes, but found 150528 bytes. 想定するバイト数の1/4で入力されている
  15. FirebaseModelInputOutputOptions 同じエラーが出る

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

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

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

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

  20. 現状とこれから まだかなり荒い状態で世に送り出されている ・情報がないし、こんなに苦戦すると思わなかったレベル ・ML Kit をサービスで使っていきましょう、はまだ早い ・ただし期待が持てる点は多い  マルチプラットフォーム、サーバで使用、軽量モデル変換 (参考)現時点では Apple

    の方が進んでいそう Create ML (https://developer.apple.com/documentation/create_ml) 端末の組み込みモデルから軽量(数十[KB])なモデルも作れる
  21. ご清聴ありがとうございました!