Slide 1

Slide 1 text

new ML Kit feature Yuki Anzai (@yanzm)

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

ML Kit とは • Firebase の機能の⼀つ • 機械学習を利⽤する機能をアプリに簡単に組み込むためのモバイル SDK • 現在は β • iOS と Android で使える • https://firebase.google.com/docs/ml-kit/

Slide 4

Slide 4 text

on-device vs Cloud • on-device API • ローカルで動作、速い • Firebase が機械学習のモデルをあらかじめダウンロードしてくれる • Cloud API • サーバーで処理、⾼機能 • ネットワーク接続が必要

Slide 5

Slide 5 text

いままでの機能 on-device Cloud Text recognition : テキスト認識 O O Face detection : 顔検出 O - Barcode scanning : バーコードスキャン O - Image labeling : 画像のラベル付け O O Landmark recognition : ランドマーク認識 - O Custom model inference : カスタムモデル推論 O -

Slide 6

Slide 6 text

新しく追加された機能 • 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

Slide 7

Slide 7 text

on-device Translation API • 59 ⾔語間の翻訳が可能 • https://firebase.google.com/docs/ml-kit/translation-language- support • Google Translate の offline mode と同じモデル • 完全に device 上で動作 = offline で動く • 無料

Slide 8

Slide 8 text

Language Pack • Each language pack : 25~35 MB • Language packs は動的にダウンロードされる • 59 language → ~3000 pairs • English を中間⾔語として利⽤ • 例) Dutch → English → Chinese

Slide 9

Slide 9 text

Limitations • intended for casual and simple translations • 翻訳の質は⾔語に依存する • より⾼い忠実度が必要なときは Cloud Translation API を試す • https://cloud.google.com/translate/

Slide 10

Slide 10 text

Usage guidelines • Usage Guidelines for ML Kit On-device Translation を読むこと • https://firebase.google.com/docs/ml-kit/translation-terms

Slide 11

Slide 11 text

Providing feedback • 不適切な翻訳を⾒つけた時は Firebase support から feedback を送る • https://firebase.google.com/support

Slide 12

Slide 12 text

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" }

Slide 13

Slide 13 text

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 { }

Slide 14

Slide 14 text

enJaTranslator.translate(text) .addOnSuccessListener { } .addOnFailureListener { }

Slide 15

Slide 15 text

Explicitly manage translation models • ML Kit's translation model management API • 事前にモデルをダウンロード • 不要なモデルを削除

Slide 16

Slide 16 text

val modelManager = FirebaseTranslateModelManager.getInstance() // デバイスに保存されている翻訳モデルを取得する modelManager.getAvailableModels(FirebaseApp.getInstance()) .addOnSuccessListener { models: Set -> // ... } .addOnFailureListener { // Error. }

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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. }

Slide 19

Slide 19 text

Object Detection and Tracking • 画像からオブジェクトを検出 • 単⼀検出 or 複数検出 • カテゴリ分類(6種類)あり or なし • on-device • 無料

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Codelab • Detect objects in images with ML Kit for Firebase: Android • https://codelabs.developers.google.com/codelabs/mlkit-android- odt/index.html • 静⽌画からオブジェクトを検出

Slide 22

Slide 22 text

Stream or Single Image • STREAM_MODE • low latency (最初の数回の呼び出しで不完全な結果が返ることがある) • tracking ID • 動画プレビュー向け • SINGLE_IMAGE_MODE • STREAM_MODE よりは latency が⾼くなりがち • 静⽌画向け

Slide 23

Slide 23 text

複数検出 • 最⼤5個まで検出

Slide 24

Slide 24 text

カテゴリ • home goods • fashion goods • food • plants • places • unknown

Slide 25

Slide 25 text

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" }

Slide 26

Slide 26 text

val options = FirebaseVisionObjectDetectorOptions.Builder() .setDetectorMode(FirebaseVisionObjectDetectorOptions.STREAM_MODE) // or SINGLE_IMAGE_MODE .enableClassification() // Optional : 複数検出 .enableMultipleObjects() // Optional : カテゴリ .build() val detector = FirebaseVision.getInstance().getOnDeviceObjectDetector(options)

Slide 27

Slide 27 text

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 { ... }

Slide 28

Slide 28 text

Improving usability and performance • 視覚的特徴が少ないオブジェクトだと、オブジェクトが画像の⼤部分を占 めないと検出されないことがあるので、うまく検出できるようにユーザー に適切なガイダンスを提供するとよい • カテゴリ分類を有効にして、特定のカテゴリのオブジェクトだけ対象にす るようなユースケースでは、unknown に配慮する

Slide 29

Slide 29 text

動画プレビューで最良のフレームレートを達成するには • 複数検出を使わない • 不要な場合はカテゴリ分類を無効にする • detector の実⾏中に利⽤可能になった新しいフレームはドロップする • Camera 2 API を使⽤している場合は ImageFormat.YUV_420_888形式 で、古い Camera API を使⽤している場合は ImageFormat.NV21形式で 画像をキャプチャする

Slide 30

Slide 30 text

Patterns for machine learning-powered features • Material Design • https://material.io/collections/machine-learning/ • サンプルアプリ • https://github.com/firebase/mlkit-material-android

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

CameraX で ObjetDetection したい • https://github.com/yanzm/CameraXObjectDetection

Slide 33

Slide 33 text

Thank you