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

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

jungo araki

July 29, 2020
Tweet

More Decks by jungo araki

Other Decks in Research

Transcript

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

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

    RailsΛ࢖ͬͨγεςϜ։ൃ • ͏͗͞ͷࣂҭه࿥ΞϓϦΛ࡞ΔͨΊɺFlutter Λ΍ͬͯ·͢ ࣗݾ঺հ
  3. • ML Kit ͸ɺGoogle ͷػցֶशͷػೳΛ Android ΞϓϦ΍ iOS ΞϓϦͱͯ͠ఏڙ͢ΔϞόΠϧ SDK

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

    Lite ͷσϕϩούʔ ΨΠυ • TensorFlow Lite Ϟσϧ ϗεςΟϯά • ΞϓϦͷόΠφϦαΠζ͕ݮΔ • ୺຤্Ͱͷ ML ਪ࿦ • ࣗಈϞσϧ ϑΥʔϧόοΫ • ෳ਺ͷϞσϧιʔεΛࢦఆ͠·͢ɻΫϥ΢υʹϗετ͞Ε͍ͯΔϞσϧΛ࢖༻Ͱ͖ͳ͍৔߹͸ɺϩʔΧϧʹอଘ͞Ε͍ͯΔϞσϧ͕࢖༻͞Ε·͢ɻ • ࣗಈϞσϧߋ৽ • ΞϓϦ͕৽͍͠όʔδϣϯͷϞσϧΛࣗಈతʹμ΢ϯϩʔυ͢Δ ΧελϜϞσϧ ? IUUQTpSFCBTFHPPHMFDPNEPDTNMLJUVTFDVTUPNNPEFMT IMKB
  5. • 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
  6. • FultterͰFirebase ML Kit ΧελϜϞσϧΛ࣮ࡍʹ͔ͭ͑Δ͔ • ৄࡉ • ΧελϜϞσϧΛFirebase ʹ

    deployͰ͖Δ͔ • TensorFlow Hub͔Β mobilenetͷϞσϧೖखͯ͠deploy • FlutterͰΧελϜϞσϧʹΑΔਪ࿦ΛϞόΠϧ୺຤্ͰͰ͖Δ͔ • mlkit repositoryͷexample appΛར༻ͯ͠ݕূ • + α • ϗετͨ͠࠷৽ͷΧελϜϞσϧ͕Flutterʹ൓ө͞ΕΔ͔ ݕূ͍ͨ͜͠ͱ
  7. • 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 ΧελϜϞσϧ
  8. • Deployํ๏͸2छྨ • Firebaseίϯιʔϧܦ༝ • SDKར༻ • PythonͱNode͕͋Δ • ࠓճ͸PythonΛར༻

    • https://github.com/firebase/quickstart-python/tree/master/machine-learning ΧελϜϞσϧΛFirebase ʹ deployͰ͖Δ͔ IUUQTpSFCBTFHPPHMFDOEPDTNMNBOBHFIPTUFENPEFMT IMFO
  9. • 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ͰΧελϜϞσϧʹΑΔਪ࿦ΛϞόΠϧ୺຤্ͰͰ͖Δ͔