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

new ML Kit feature

new ML Kit feature

Avatar for Yuki Anzai

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