Flutter mlkit pluginでFirebase ML kit カスタムモデルを使う

Flutter mlkit pluginでFirebase ML kit カスタムモデルを使う

FlutterからFirebase ML kitを使うための、公式から提供されているpluginは firebase_ml_visionです。

しかし、一般的なユースケース「テキストの認識、顔検出、etc..」のみの対応で、カスタムモデルには未対応です。 今回は、TensorFlow Lite モデルで作ったカスタムモデルにも対応している、mlkit pluginを試して、その内容をお話ししました。

リンク集

mlkit : Flutterでカスタムモデルを使うにはこれ一択
https://pub.dev/packages/mlkit

mlkitのreadmeにはないけどtfliteをつかうならAndroidだとこの記述が必要。
https://firebase.google.com/docs/ml-kit/android/use-custom-models?hl=ja

Tensorflow hub : tflite形式のファイルがたくさん。
https://tfhub.dev/s?deployment-format=lite

Firebase ML kitのSDK (python) : これでカスタムモデルをFirabaseにuploadできる
https://github.com/firebase/quickstart-python/tree/master/machine-learning

tensorflow liteの公式
https://www.tensorflow.org/lite?hl=ja

カスタムモデルの話
https://firebase.google.com/docs/ml-kit/use-custom-models?hl=ja

Firabase ML kit
https://firebase.google.com/docs/ml-kit?hl=ja

Bba9b7a926f27fb88ae6b7c03f53f6a8?s=128

jungo araki

July 29, 2020
Tweet

Transcript

  1. 2020-07-29 JUNARA (JUNGO ARAKI) Flutter mlkit pluginͰFirebase ML kit ΧελϜϞσ

    ϧΛ࢖͏ ୈ21ճΏΔ͸ͪ.it: Flutterʹ͍ͭͯΏΔ͘࿩͢
  2. • ߥ໦ ३ޗ • ෎தࢢࡏॅΤϯδχΞ • Ն͸ɺന۽Λ৯΂Δͷָ͕͠ΈͰ͢ • ओʹRuby on

    RailsΛ࢖ͬͨγεςϜ։ൃ • ͏͗͞ͷࣂҭه࿥ΞϓϦΛ࡞ΔͨΊɺFlutter Λ΍ͬͯ·͢ ࣗݾ঺հ
  3. ຊ୊

  4. FlutterͰ ը૾ೝ͍ࣝͨ͠

  5. ͏͗͞ͷϑϯͷը૾Λ ֶशͤͯ͞ ਺͍͑ͨ

  6. Flutterͱ͍͑͹ Firebase

  7. • ML Kit ͸ɺGoogle ͷػցֶशͷػೳΛ Android ΞϓϦ΍ iOS ΞϓϦͱͯ͠ఏڙ͢ΔϞόΠϧ SDK

    Ͱ͢ɻ • ҰൠతͳϢʔεέʔε • ςΩετͷೝࣝɺإݕग़ɺϥϯυϚʔΫͷೝࣝɺόʔίʔυͷεΩϟϯɺը૾ͷϥϕϧ෇͚ɺςΩετͷݴޠͷࣝผ ͳͲ • σόΠε / Ϋϥ΢υͷ྆ํʹରԠ • ML Kit ʹ͸ɺσόΠε·ͨ͸Ϋϥ΢υ্Ͱ࣮ߦͰ͖Δ API ͕༻ҙ͞Ε͍ͯ·͢ɻ • ΧελϜϞσϧΛσϓϩΠ • ಠࣗͷ TensorFlow Lite ϞσϧΛ͍ͭͰ΋૊ΈࠐΉ͜ͱ͕Ͱ͖·͢ɻϞσϧΛ Firebase ʹΞοϓϩʔυ͢Δ͚ͩ ͰɺϞσϧͷϗεςΟϯάͱΞϓϦʹର͢ΔαʔϏεॲཧ͸ Google ଆͰߦΘΕ·͢ɻ Firebase ML kit ͕࢖͑ͦ͏ʁ IUUQTpSFCBTFHPPHMFDPNEPDTNMLJU IMKB
  8. Firebase ML kit ΧελϜϞσϧͰ Ͱ͖ͦ͏ͩͧ

  9. • = TensorFlow Lite Ϟσϧ • TenforFlowͰֶशͨ͠Ϟσϧ͔Βग़ྗͨ͠tfliteόΠφϦϑΝΠϧͷ͜ͱ • → TensorFlow

    Lite ͷσϕϩούʔ ΨΠυ • TensorFlow Lite Ϟσϧ ϗεςΟϯά • ΞϓϦͷόΠφϦαΠζ͕ݮΔ • ୺຤্Ͱͷ ML ਪ࿦ • ࣗಈϞσϧ ϑΥʔϧόοΫ • ෳ਺ͷϞσϧιʔεΛࢦఆ͠·͢ɻΫϥ΢υʹϗετ͞Ε͍ͯΔϞσϧΛ࢖༻Ͱ͖ͳ͍৔߹͸ɺϩʔΧϧʹอଘ͞Ε͍ͯΔϞσϧ͕࢖༻͞Ε·͢ɻ • ࣗಈϞσϧߋ৽ • ΞϓϦ͕৽͍͠όʔδϣϯͷϞσϧΛࣗಈతʹμ΢ϯϩʔυ͢Δ ΧελϜϞσϧ ? IUUQTpSFCBTFHPPHMFDPNEPDTNMLJUVTFDVTUPNNPEFMT IMKB
  10. ΧελϜϞσϧͷApp΁ ͷϗετΛFirebase͕Έ ͯ͘ΕΔͷ͸͏Ε͍͠

  11. • TensorFlow Lite is designed to execute models efficiently on

    mobile and other embedded devices with limited compute and memory resources. TensorFlow models must be converted into this format before they can be used by TensorFlow Lite. • ϞόΠϧͰಈ࡞͠΍ͨ͘͢͠ϞσϧɻTensofFlow͔Βม׵ͯ͠࡞Δ • Use a pre-trained model • ͢Ͱʹม׵ࡁΈͷtfliteόΠφϦΛTensorFlow Hub͔Βೖख͔ͯͭ͠͏ • Re-train a model (transfer learning) or Train a custom model • https://codelabs.developers.google.com/codelabs/recognize-flowers-with-tensorflow-on-android/#0 (Ֆͷը૾Λ࢖ͬ ͯసҠֶशྫ) • https://www.tensorflow.org/lite/guide/get_started?hl=ja#2_convert_the_model_format TensorFlow Lite IUUQTXXXUFOTPSqPXPSHMJUF IMKB
  12. TensorHub࢖͑͹ ಈ࡞ݕূͰ͖ͦ͏

  13. • ΧελϜϞσϧΛ࢖͏ͳΒ mlkit ʢඇެࣜʣҰ୒ https://pub.dev/packages/mlkit • firebase_ml_vision ( https://pub.dev/packages/firebase_ml_vision )

    ͸ެ͕ࣜͩɺΧελϜϞσϧ ʹ͸ඇରԠ FlutterͰFirebase ML kitΛ࢖͏ʹ͸ʁ
  14. ௐ͔ࠪΒ TensorHub, Firebase,mlkit Λ࢖͑͹ݕূͰ͖ͦ͏ɹ

  15. ݕূ͠Α͏

  16. • FultterͰFirebase ML Kit ΧελϜϞσϧΛ࣮ࡍʹ͔ͭ͑Δ͔ • ৄࡉ • ΧελϜϞσϧΛFirebase ʹ

    deployͰ͖Δ͔ • TensorFlow Hub͔Β mobilenetͷϞσϧೖखͯ͠deploy • FlutterͰΧελϜϞσϧʹΑΔਪ࿦ΛϞόΠϧ୺຤্ͰͰ͖Δ͔ • mlkit repositoryͷexample appΛར༻ͯ͠ݕূ • + α • ϗετͨ͠࠷৽ͷΧελϜϞσϧ͕Flutterʹ൓ө͞ΕΔ͔ ݕূ͍ͨ͜͠ͱ
  17. • mlkit exampleͰ࢖ΘΕ͍ͯΔ mobilenetΛར༻ • mobilenet͸ը૾෼ྨͷ୅දతͳϞσϧ • ࠓճͨΊͨ͠΋ͷ • mobilenet_v1_0.25_224_quantized

    • https://tfhub.dev/tensorflow/lite-model/mobilenet_v1_0.25_224_quantized/1/default/1 • ʢ͕࣌ؒ͋Ε͹ʣmobilenet_v1_1.0_224_quantized • https://tfhub.dev/tensorflow/coral-model/mobilenet_v1_1.0_224_quantized/1/default/1 ΧελϜϞσϧ
  18. • Deployํ๏͸2छྨ • Firebaseίϯιʔϧܦ༝ • SDKར༻ • PythonͱNode͕͋Δ • ࠓճ͸PythonΛར༻

    • https://github.com/firebase/quickstart-python/tree/master/machine-learning ΧελϜϞσϧΛFirebase ʹ deployͰ͖Δ͔ IUUQTpSFCBTFHPPHMFDOEPDTNMNBOBHFIPTUFENPEFMT IMFO
  19. None
  20. • mlkit sample ͷ example app ͷΧελϜϞσϧΛ࢖͍ͬͯΔՕॴͰݕূ • https://pub.dev/packages/mlkit •

    Android build͸ mlkit ͷreadmeҎ֎ͩͱɺԼهʹؾΛ͚ͭΕ͹OK • https://firebase.google.com/docs/ml-kit/android/use-custom-models?hl=ja • ಈ͔͘ʁ • managerͰϞσϧͷࢦఆͯ͠ɺinterpreterͰ࣮ߦ͢Δ • FirebaseModelInterpreter interpreter = FirebaseModelInterpreter.instance; • FirebaseModelManager manager = FirebaseModelManager.instance; • code • manager.registerRemoteModelSource Ͱ Firebaseʹొ࿥ͨ͠ custom model໊Λొ࿥͢Δ • interpreter.run( remoteModelName: _localModels[_currentModel], // ͜͜ʹ custom model ໊ͱొ࿥͢Δ • ػ಺ϞʔυͰಈ͘ʁ FlutterͰΧελϜϞσϧʹΑΔਪ࿦ΛϞόΠϧ୺຤্ͰͰ͖Δ͔
  21. γϟϜೣ?

  22. • mobilenet_v1_1.0_224_quantized ΧελϜϞσϧΛdeployͯ݁͠Ռ͕มΘΔ͔ʁ • ύϥϝʔλͷҧ͍ • mobilenet_v1_0.25_224_quantized ʢ< 1MBʣΑΓ ༰ྔ͕େ͖͍ʢ໿4MBʣ͕ਫ਼౓͕ߴ͍

    ϗετͨ͠࠷৽ͷΧελϜϞσϧ͕Flutterʹ൓ө͞ΕΔ͔
  23. ໺΢αΪ !

  24. • FirebaseͰϗετͰ͖ΔΧελϜϞσϧͷ༰ྔͷ্ݶ͸40MBͰ͢ɻ • ͨͱ͑͹ɺࣗવݴޠॲཧʢAlbert, Mobilebertʣ͸࢖͑ͳ͍Ͱ͢ʢ࢒೦ʣ • ผ్deployํ๏Λߟ͑Δ or Appͱڞʹ഑৴͢Δํ๏͕ඞཁͰ͢ɻ ͪΐͬͱ଍Γͳ͍ॴ

  25. • FultterͰFirebase ML Kit ΧελϜϞσϧΛ࣮ࡍʹ͔ͭ͑Δ͔ →ɹ࢖͑Δʂ • ࢒λεΫ • TensorFlowͰฅͷը૾Λֶशͤ͞Δ

    && TensorFlow liteʹॻ͖ग़͢ ·ͱΊ