ML Kit 最新情報 (@ DevFest Tokyo 2019)

D2bcabeeb1ddff142fb8988b412cb4d3?s=47 Yuki Anzai
December 14, 2019

ML Kit 最新情報 (@ DevFest Tokyo 2019)

D2bcabeeb1ddff142fb8988b412cb4d3?s=128

Yuki Anzai

December 14, 2019
Tweet

Transcript

  1. ML Kit 最新情報 あんざいゆき (@yanzm) at DevFest Tokyo 2019

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

    uPhyca Inc. (2011~) • Google Developers Expert for Android • Organizer of GTUG Girls and droid girls • Twitter : @yanzm
  3. ML Kit

  4. ML Kit • Firebase の機能の⼀つ • 機械学習を利⽤する機能をアプリに簡単に組み込むためのモバイル SDK • 現在は

    β • iOS と Android で使える • https://firebase.google.com/docs/ml-kit/
  5. ML Kit の進歩 • ML Kit 発表時 • 6機能 :

    Text recognition、Face detection(主要なランドマークのみ)、 Barcode scanning、Image labeling、Landmark recognition、Custom model inference • 現在 • 11機能 : Face detection(輪郭)、Object detection & tracking、 Language identification、Translation、Smart Reply、AutoML model inference が追加
  6. On-Device or Cloud On-Device Cloud Vision Text recognition : テキスト認識

    O O Face detection : 顔検出 O - Barcode scanning : バーコードスキャン O - Image labeling : 画像のラベル付け O O Object detection & tracking : 物体検出 O - Landmark recognition : ランドマーク認識 - O
  7. On-Device or Cloud On-Device Cloud Natural Language Language identification :

    ⾔語識別 O - Translation : 翻訳 O - Smart Reply : スマートリプライ O - AutoML Vision AutoML model inference : AutoML モデル推論 O - Custom Model Custom model inference : カスタムモデル推論 O -
  8. On-Device vs Cloud • On-Device API • ローカルで動作、速い • 機械学習モデルのダウンロードは

    Firebase におまかせ • Cloud API • サーバーで処理、⾼機能 • ネットワーク接続が必要
  9. Pricing your account's first 1000 Cloud Vision API calls/month are

    free
  10. Text recognition : テキスト認識 • 画像からテキストを認識 • 看板などの短いテキスト⽤ : On-Device,

    Cloud • ⼩説など⻑く詰まったドキュメント⽤ : Cloud のみ photos by https://firebase.google.com/docs/ml-kit/recognize-text
  11. • On-Device API • 無料 • 全てのラテン⽂字を認識 • Cloud API

    • 毎⽉最初の 1000 API call は無料(1000+ からは従量課⾦) • 50 をこえる⾔語を認識(⽇本語含む) Text recognition : テキスト認識
  12. None
  13. Face detection : 顔検出 • on-device API のみ • 顔の領域、ランドマーク(⽬・頬・⿐・⽿・⼝)、輪郭情報(顔の外郭・

    ⽬・眉・⿐・⼝)の位置認識 • 顔の表情(⽬の開閉度合い、笑顔の度合い)の認識 • 動画のフレーム間で同じ顔をトラック可能
  14. Face contour https://firebase.google.com/docs/ml-kit/detect-faces

  15. Barcode scanning : バーコードスキャン • on-device API のみ • ほとんどの標準フォーマットをサポート

    • 1次元 : Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, UPC-A, UPC-E • 2次元 : Aztec, Data Matrix, PDF417, QR Code • ⾃動フォーマット検出 • structured data (WiFi情報など)の取り出し • バーコードの向きによらず検出可能
  16. format 256 (QR Code) valueType 9 (WIFI) rawValue WIFI:S:SB1Guest;P:12345;T:WEP;; displayValue

    SB1Guest 12345 boundingBox Rect(300, 457 - 669, 824) encryptionType 3 (WEP) ssid SB1Guest password 12345
  17. Image labeling : 画像のラベル付け • 画像の内容を解析し、認識したもののラベルをつける : ⼈、物、場所、活動など • on-device

    API • 無料 • 400+ labels をサポート • Cloud API • 毎⽉最初の 1000 API call は無料(1000+ からは従量課⾦) • 10,000+ labels をサポート
  18. label : Building confidence : 0.77894384 entityId : /m/0cgh4 label

    : Palace confidence : 0.75397676 entityId : /m/05zp8 label : landmark confidence : 0.9432406 entityId : /m/05_5t0l label : town confidence : 0.9333225 entityId : /m/0dx1j
  19. label : Food confidence : 0.9649049 entityId : /m/02wbm label

    : Cuisine confidence : 0.91778296 entityId : /m/01ykh label : food confidence : 0.9399401 entityId : /m/02wbm label : cuisine confidence : 0.9263104 entityId : /m/01ykh
  20. val options = FirebaseVisionOnDeviceImageLabelerOptions .Builder() .setConfidenceThreshold(0.9f) .build()

  21. Object detection & tracking: 物体認識 • on-device API のみ •

    画像からオブジェクトを検出 • 粗い classification • 検出したオブジェクトの画像を • Cloud に投げてより精度の⾼い検索につなげる → Cloud Vision Product Search • 独⾃のモデルにつなげる → AutoML Vision Edge
  22. • モード : STREAM_MODE (default) | SINGLE_IMAGE_MODE • 複数オブジェクト検出 :

    false (default) | true • 最⼤5個まで • カテゴリ分類 : false (default) | true • UNKNOWN, HOME_GOOD, FASHION_GOOD, FOOD, PLACE, PLANT Object detection & tracking: 物体認識
  23. 最適なユースケース • カメラのプレビューを使った最も主要なオブジェクトのリアルタイム検出 とトラッキング • 静⽌画からの複数オブジェクトの検出

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

    るようなユースケースでは、unknown に配慮する
  25. Landmark detection : ランドマーク認識 • Cloud API のみ • 毎⽉最初の

    1000 API call は無料(1000+ からは従量課⾦) • 画像から有名なランドマークを認識 • ランドマーク名 • 地理座標 • Knowledge Graph entity ID • 画像内でのランドマークの領域
  26. landmark Amsterdam Centraal Railway Station confidence 0.86155003 landmark Amsterdam confidence

    0.5167069
  27. Language Identification : ⾔語ID • On-Device API のみ • ⽂字列からその⾔語を識別

    • 100以上の⾔語に対応 • https://firebase.google.com/docs/ml-kit/langid-support • 最も可能性の⾼い⾔語を1つ識別(Confidence 情報なし) or 可能性のあ る複数の⾔語を識別(Confidence 情報あり)
  28. Translation : 翻訳 • On-Device API のみ • 59 ⾔語間の翻訳が可能

    • https://firebase.google.com/docs/ml-kit/translation-language- support • Google Translate の offline mode と同じモデル
  29. Language Pack • Each language pack : 25~35 MB •

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

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

    を読むこと • https://firebase.google.com/docs/ml-kit/translation-terms • 帰属の表⽰要件 • 制限事項
  32. Smart Reply : スマートリプライ • On-Device API のみ • 会話に関連する返事を⽣成し提案

    • 単⼀のメッセージではなく会話のフルコンテキストから⽣成 • 現在は English のみサポート • 他⾔語と判定された場合提案なしになる • sensitive topics があると判定された場合提案なしになる
  33. Smart Reply : スマートリプライ • 消費者向けアプリでのカジュアルな会話向け • 返事の候補は最⼤3つ提案される

  34. None
  35. Custom model inference : カスタムモデル推論 • Firebase で TensorFlow Lite

    のモデルをホスティング • Firebase SDK がモデルのダウンロードをハンドリング • モデルの更新も可能 • apk にバンドルしたモデルを Firebase SDK 経由で利⽤することも可能 • on-device API として利⽤
  36. AutoML model inference : AutoMLモデル推論 • Firebase console から画像をアップロードしてモデルを作成できる •

    内部で Cloud AutoML Vision service を利⽤ • 画像とラベルのセットを提供するだけで、いい感じに学習して画像分類 モデルを作ってくれるサービス • AutoML での学習は有料 • 作成したモデルはダウンロードできるし、ホスティングもできる
  37. AutoML の Pricing

  38. AutoML の画像要件 • 利⽤できる画像フォーマット : JPEG, PNG, GIF, BMP, ICO

    • 画像のサイズ : 30MB以下 • ラベルごとに最低10枚、できれば100枚以上 • ラベルごとに異なる⾓度、解像度、背景を含める • 予測が⾏われる状況に可能な限り近い画像を使う • AutoML Vision Edge によって⽣成されたモデルは、実世界のオブジェクトの写真 ⽤に最適化されている
  39. ML Kit + CameraX

  40. リアルタイムプレビュー • on-device ML のユースケースとしてリアルタイムプレビューは外せない • 特に検出系 • バーコード検出 •

    物体検出 • テキスト検出
  41. リアルタイムプレビューは⼤変 • Camera を扱うコード • Camera からのバッファーストリームの処理 • ML Kit

    との接続 • ...
  42. CameraX • Android の Camera 機能の実装を楽にしてくれるライブラリ • もうすぐ(2019年12⽉に)beta が出る •

    Android 5.0 (API Level 21) 以降をサポート • ML Kit など機械学習との連携が簡単
  43. Android Jetpack: Understand the CameraX Camera-Support Library (Google I/O'19) https://www.youtube.com/watch?v=kuv8uK-5CLY

    プレビューのフレームデータを使って処理を⾏うためのAPIが⽤意されている
  44. Codelab の資料 : bit.ly/36okusX

  45. Custom Model ⼊⾨

  46. Custom Model を使うとき • ML Kit で⽤意されている機能では⾜りないとき • 例)特定のカテゴリーの分類 •

    花の分類 • ⿂の分類 • ⾷べ物の分類 寿司と認識 してほしいなぁ...
  47. モデルの⼊出⼒情報 • ML Kit を使ってアプリに組み込むには、モデルの⼊出⼒の情報が必要 • classification (分類)は出⼒形式がシンプルなので⼊⾨によい • ⼊出⼒の

    Format はモデルによって異なる • 例)とある Vision のモデル • ⼊⼒ Format : Byte[バッチ数][224][224][3] • 出⼒ Format : Byte[バッチ数][1001]
  48. モデルの⼊出⼒情報 • ⼊出⼒次元を指定 : FirebaseModelInputOutputOptions • ⼊⼒ : FirebaseModelInputs •

    Vision の場合 Bitmap, Image → ByteArray, ByteBuffer → • 出⼒ : Byte の多次元配列
  49. Custom Model に⼊⾨する おすすめステップ

  50. 1. 既存の画像分類モデルを使う (コードラボ)

  51. 既存の画像分類モデルを使う • 画像からオブジェクトを認識して分類 • https://codelabs.developers.google.com/ codelabs/mlkit-android-custom-model • mobilenet_v1_1.0_224_quant.tflite • ⼊⼒

    Format : Byte[1][224][224][3] • 出⼒ Format : Byte[1][1001] 1 = バッチ数 224 = 画像の⼤きさ 3 = R,G,Bの3⾊情報 1001 = 分類の数
  52. ⼊出⼒の Format 指定 private val modelInputOutputOptions by lazy { val

    inputDims = arrayOf(1, 224, 224, 3) val outputDims = arrayOf(1, labelList.size) FirebaseModelInputOutputOptions.Builder() .setInputFormat(0, FirebaseModelDataType.BYTE, inputDims.toIntArray()) .setOutputFormat(0, FirebaseModelDataType.BYTE, outputDims.toIntArray()) .build() }
  53. val byteBuffer: ByteBuffer = convertBitmapToByteBuffer(bitmap) val modelInputs: FirebaseModelInputs = try

    { FirebaseModelInputs.Builder() .add(byteBuffer) .build() } catch (e: FirebaseMLException) { ... return } modelInterpreter .run(modelInputs, modelInputOutputOptions) .addOnSuccessListener { val inferenceOutput: Array<ByteArray> = it.getOutput(0) val topLabels = getTopLabels(inferenceOutput) ... }
  54. 2. AutoML で花の分類モデルを 作る(コードラボ)

  55. AutoML で花の分類モデルを作る • たんぽぽ、デイジー、チューリップ、ひまわり、バラ の分類モデルを作る • https://codelabs.developers.google.com/ codelabs/automl-vision-edge-in-mlkit • 各花ごと200枚の画像

    • 無料プラン(Spark)でも試せる
  56. None
  57. None
  58. None
  59. None
  60. None
  61. None
  62. None
  63. None
  64. None
  65. None
  66. None
  67. None
  68. None
  69. None
  70. None
  71. None
  72. None
  73. 3. AutoML で画像分類モデルを 作る(⾃分の画像)

  74. AutoMLの学習時間の⽬安

  75. 4. 公開されている TensorFlow Lite のモデルを使う

  76. TensorFlow Hub https://tfhub.dev/s

  77. 5. TensorFlow を使って独⾃の モデルを作る

  78. Colaboratory • AutoML でやった花分類のモデルを Google Colaboratory で作る • 「Recognize Flowers

    with TensorFlow Lite on Android」 • https://codelabs.developers.google.com/codelabs/recognize- flowers-with-tensorflow-on-android
  79. ML 機能の UI/UX

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

  81. Codelabs • Text recognition, Face detection, Image labeling, Custom model

    • 「Recognize text, facial features, and objects in images with ML Kit for Firebase: Android」 • https://codelabs.developers.google.com/codelabs/mlkit-android • Barcode detection • 「Detect Barcodes in an Image using Firebase MLKit」 • https://codelabs.developers.google.com/codelabs/mlkit-barcode-android
  82. Codelabs • Image labeling • 「Detect objects in an Image

    using Firebase MLKit」 • https://codelabs.developers.google.com/codelabs/mlkit-image-objects- android • Object detection • 「Detect objects in images with ML Kit for Firebase: Android」 • https://codelabs.developers.google.com/codelabs/mlkit-android-odt
  83. Codelabs • Custom model • 「Identify objects in images using

    custom machine learning models with ML Kit for Firebase」 • https://codelabs.developers.google.com/codelabs/mlkit-android-custom-model • AutoML model • 「Train and deploy on-device image classification model with AutoML Vision in ML Kit」 • https://codelabs.developers.google.com/codelabs/automl-vision-edge-in-mlkit
  84. Thank you