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

new ML Kit feature

new ML Kit feature

Yuki Anzai

May 17, 2019
Tweet

More Decks by Yuki Anzai

Other Decks in Technology

Transcript

  1. 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
  2. on-device vs Cloud • on-device API • ローカルで動作、速い • Firebase

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

    detection : 顔検出 O - Barcode scanning : バーコードスキャン O - Image labeling : 画像のラベル付け O O Landmark recognition : ランドマーク認識 - O Custom model inference : カスタムモデル推論 O -
  4. 新しく追加された機能 • 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
  5. on-device Translation API • 59 ⾔語間の翻訳が可能 • https://firebase.google.com/docs/ml-kit/translation-language- support •

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

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

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

    を読むこと • https://firebase.google.com/docs/ml-kit/translation-terms
  9. 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 { }
  10. Explicitly manage translation models • ML Kit's translation model management

    API • 事前にモデルをダウンロード • 不要なモデルを削除
  11. 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. }
  12. Object Detection and Tracking • 画像からオブジェクトを検出 • 単⼀検出 or 複数検出

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

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

    • tracking ID • 動画プレビュー向け • SINGLE_IMAGE_MODE • STREAM_MODE よりは latency が⾼くなりがち • 静⽌画向け
  15. val options = FirebaseVisionObjectDetectorOptions.Builder() .setDetectorMode(FirebaseVisionObjectDetectorOptions.STREAM_MODE) // or SINGLE_IMAGE_MODE .enableClassification() //

    Optional : 複数検出 .enableMultipleObjects() // Optional : カテゴリ .build() val detector = FirebaseVision.getInstance().getOnDeviceObjectDetector(options)
  16. 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 { ... }
  17. Patterns for machine learning-powered features • Material Design • https://material.io/collections/machine-learning/

    • サンプルアプリ • https://github.com/firebase/mlkit-material-android