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

new ML Kit feature

new ML Kit feature

D2bcabeeb1ddff142fb8988b412cb4d3?s=128

Yuki Anzai

May 17, 2019
Tweet

Transcript

  1. new ML Kit feature Yuki Anzai (@yanzm)

  2. Yuki Anzai • Android App Developer (2009~) • CEO of

    uPhyca Inc. (2011~) • Google Developer Expert for Android • Organizer of GTUG Girls and droid girls • Twitter : @yanzm
  3. ML Kit とは • Firebase の機能の⼀つ • 機械学習を利⽤する機能をアプリに簡単に組み込むためのモバイル SDK •

    現在は β • iOS と Android で使える • https://firebase.google.com/docs/ml-kit/
  4. on-device vs Cloud • on-device API • ローカルで動作、速い • Firebase

    が機械学習のモデルをあらかじめダウンロードしてくれる • Cloud API • サーバーで処理、⾼機能 • ネットワーク接続が必要
  5. いままでの機能 on-device Cloud Text recognition : テキスト認識 O O Face

    detection : 顔検出 O - Barcode scanning : バーコードスキャン O - Image labeling : 画像のラベル付け O O Landmark recognition : ランドマーク認識 - O Custom model inference : カスタムモデル推論 O -
  6. 新しく追加された機能 • Object Detection and Tracking • on-device Translation •

    ML Kit: Machine Learning for Mobile with Firebase (Google I/O'19) • https://www.youtube.com/watch?v=QwHD36bhXZA
  7. on-device Translation API • 59 ⾔語間の翻訳が可能 • https://firebase.google.com/docs/ml-kit/translation-language- support •

    Google Translate の offline mode と同じモデル • 完全に device 上で動作 = offline で動く • 無料
  8. Language Pack • Each language pack : 25~35 MB •

    Language packs は動的にダウンロードされる • 59 language → ~3000 pairs • English を中間⾔語として利⽤ • 例) Dutch → English → Chinese
  9. Limitations • intended for casual and simple translations • 翻訳の質は⾔語に依存する

    • より⾼い忠実度が必要なときは Cloud Translation API を試す • https://cloud.google.com/translate/
  10. Usage guidelines • Usage Guidelines for ML Kit On-device Translation

    を読むこと • https://firebase.google.com/docs/ml-kit/translation-terms
  11. Providing feedback • 不適切な翻訳を⾒つけた時は Firebase support から feedback を送る •

    https://firebase.google.com/support
  12. Setup dependencies { ... implementation "com.google.firebase:firebase-ml-natural-language:19.0.0" implementation "com.google.firebase:firebase-ml-natural-language-translate-model:19.0.0" }

  13. val options = FirebaseTranslatorOptions.Builder() .setSourceLanguage(FirebaseTranslateLanguage.EN) .setTargetLanguage(FirebaseTranslateLanguage.JA) .build() val translator =

    FirebaseNaturalLanguage.getInstance().getTranslator(options) 実際に translate する前にモデルがダウンロードされているか確認する val conditions = FirebaseModelDownloadConditions.Builder() .requireWifi() .build() translator.downloadModelIfNeeded(conditions) .addOnSuccessListener { } .addOnFailureListener { }
  14. enJaTranslator.translate(text) .addOnSuccessListener { } .addOnFailureListener { }

  15. Explicitly manage translation models • ML Kit's translation model management

    API • 事前にモデルをダウンロード • 不要なモデルを削除
  16. val modelManager = FirebaseTranslateModelManager.getInstance() // デバイスに保存されている翻訳モデルを取得する modelManager.getAvailableModels(FirebaseApp.getInstance()) .addOnSuccessListener { models:

    Set<FirebaseTranslateRemoteModel> -> // ... } .addOnFailureListener { // Error. }
  17. val modelManager = FirebaseTranslateModelManager.getInstance() // ⽇日本語モデルを(デバイスに保存されていれば)削除する val jaModel = FirebaseTranslateRemoteModel.Builder(FirebaseTranslateLanguage.JA)

    .build() modelManager.deleteDownloadedModel(jaModel) .addOnSuccessListener { // Model deleted. } .addOnFailureListener { // Error. }
  18. val modelManager = FirebaseTranslateModelManager.getInstance() // ⽇日本語モデルを明示的にダウンロードする val conditions = FirebaseModelDownloadConditions.Builder()

    .requireWifi() .build() val jaModel = FirebaseTranslateRemoteModel.Builder(FirebaseTranslateLanguage.JA) .setDownloadConditions(conditions) .build() modelManager.downloadRemoteModelIfNeeded(jaModel) .addOnSuccessListener { // Model downloaded. } .addOnFailureListener { // Error. }
  19. Object Detection and Tracking • 画像からオブジェクトを検出 • 単⼀検出 or 複数検出

    • カテゴリ分類(6種類)あり or なし • on-device • 無料
  20. None
  21. Codelab • Detect objects in images with ML Kit for

    Firebase: Android • https://codelabs.developers.google.com/codelabs/mlkit-android- odt/index.html • 静⽌画からオブジェクトを検出
  22. Stream or Single Image • STREAM_MODE • low latency (最初の数回の呼び出しで不完全な結果が返ることがある)

    • tracking ID • 動画プレビュー向け • SINGLE_IMAGE_MODE • STREAM_MODE よりは latency が⾼くなりがち • 静⽌画向け
  23. 複数検出 • 最⼤5個まで検出

  24. カテゴリ • home goods • fashion goods • food •

    plants • places • unknown
  25. Setup dependencies { ... implementation "com.google.firebase:firebase-ml-vision:20.0.0" implementation "com.google.firebase:firebase-ml-vision-object-detection-model:16.0.0" }

  26. val options = FirebaseVisionObjectDetectorOptions.Builder() .setDetectorMode(FirebaseVisionObjectDetectorOptions.STREAM_MODE) // or SINGLE_IMAGE_MODE .enableClassification() //

    Optional : 複数検出 .enableMultipleObjects() // Optional : カテゴリ .build() val detector = FirebaseVision.getInstance().getOnDeviceObjectDetector(options)
  27. val image = FirebaseVisionImage.fromMediaImage(mediaImage, rotation) val image = FirebaseVisionImage.fromBitmap(bitmap) detector.processImage(image)

    .addOnSuccessListener { results -> for (obj in results) { val entityId: String = obj.entityId val box: Rect = obj.boundingBox val category: Int = obj.classificationCategory val confidence: Float? = obj.classificationConfidence val trackingId: Int? = obj.trackingId ... } } .addOnFailureListener { ... }
  28. Improving usability and performance • 視覚的特徴が少ないオブジェクトだと、オブジェクトが画像の⼤部分を占 めないと検出されないことがあるので、うまく検出できるようにユーザー に適切なガイダンスを提供するとよい • カテゴリ分類を有効にして、特定のカテゴリのオブジェクトだけ対象にす

    るようなユースケースでは、unknown に配慮する
  29. 動画プレビューで最良のフレームレートを達成するには • 複数検出を使わない • 不要な場合はカテゴリ分類を無効にする • detector の実⾏中に利⽤可能になった新しいフレームはドロップする • Camera

    2 API を使⽤している場合は ImageFormat.YUV_420_888形式 で、古い Camera API を使⽤している場合は ImageFormat.NV21形式で 画像をキャプチャする
  30. Patterns for machine learning-powered features • Material Design • https://material.io/collections/machine-learning/

    • サンプルアプリ • https://github.com/firebase/mlkit-material-android
  31. Custom Image Classifier • データセット収集、ラベル付け、学習(ML Kit の AutoML Vision Edge)、モデルのテストができる便利

    Flutter アプリ • https://github.com/firebase/mlkit-custom-image-classifier
  32. CameraX で ObjetDetection したい • https://github.com/yanzm/CameraXObjectDetection

  33. Thank you