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

Mercar Gears MercariにおけるEdgeAIについて

744424a2b6307140bf794ffb00ce5ec1?s=47 oshima
September 14, 2021

Mercar Gears MercariにおけるEdgeAIについて

Mercari Gears lecture session にて利用したスライドです。
https://www.youtube.com/watch?v=kKL0RKd34a0

744424a2b6307140bf794ffb00ce5ec1?s=128

oshima

September 14, 2021
Tweet

Transcript

  1. メルカリにおけるEdgeAIの活用 @y-oshima

  2. 2 多くの機能をリリース • 検索の改善 • 画像検索 • 違反出品検知 • AI出品

    • レコメンデーション Mercariにおける機械学習の取り組み 機械学習プラットフォーム
  3. 3 EdgeAI モバイルのようなデバイス上で機械学習の推論を行う技術

  4. 4

  5. 5 Agenda • なぜEdgeAIが必要なのか • EdgeAIを用いた機能の開発 • EdgeAIを支える技術 • EdgeAIを支える技術を支える基盤

  6. 6 なぜEdgeAIが必要なのか

  7. 7 売れるかチェック アイテムを撮影すると • 売れている価格平均 • 売り切れ率 がわかる UXを改善し利用率を上げたい

  8. 8 利用率を向上のために 結果表示 タップ 領域検出 写真撮影 カメラ画面 売れるかチェックのステップ

  9. 9 利用率を向上のために 結果表示 タップ 物体認識 写真撮影 カメラ画面 各ステップの遷移率をログから集計 ここでやめてしまうお客様が多い 写真の撮影は想定以上にハードルが高いのでは?

    写真撮影のステップをなくせないか
  10. 10 「かざす」UI スニーカー 〇〇円

  11. 11 • 応答性 ◦ 素早く結果を返せるか • 連続性 ◦ 状態の遷移が連続的か •

    フィードバック ◦ アクションの結果が伝わるか • 柔軟性 ◦ 変更を加えるのが容易か UIの評価指標 [Aagesen, P. T., & Heyer, C. 2016]
  12. 12 応答性 結果表示 タップ 領域検出 写真撮影 カメラ画面 1秒 1秒

  13. 13 応答性 スニーカー 〇〇円 かざした瞬間結果が出る 応答性 高

  14. 14 連続性 結果表示 タップ 領域検出 写真撮影 カメラ画面 画面遷移 画面遷移

  15. 15 連続性 スニーカー 〇〇円 物体検出や結果表示に 画面遷移がない 連続性 高

  16. 16 フィードバック 結果表示 タップ 領域検出 写真撮影 カメラ画面 画面遷移の後でしかフィードバックが得られない

  17. 17 フィードバック スニーカー 〇〇円 注目されたアイテムや 結果が即座にわかる フィードバック 高

  18. 18 柔軟性 結果表示 タップ 領域検出 写真撮影 カメラ画面 写真の修正は撮影のやり直し

  19. 19 柔軟性 サングラス △△円 カメラを動かすだけで 別のアイテムに移る 柔軟性 高

  20. 20 「かざす」UI実現の課題 ② 物体検出や画像検索 ① 写真を送信 ③ 結果を返す サーバで推論を行う場合 全体で1sec程度

    ネットワークの影響を受ける
  21. 21 「かざす」UI実現の課題 サーバで推論を行う場合 滑らかな体験を実現するためには 100 msec 未満が理想 [Card, S. K.,

    Robertson, G. G., & Mackinlay, J. D. (1991, March)] サーバでの推論では間に合わない
  22. 22 Edge AI 1 sec 〜 〜 50ms • 100ms未満を実現可能

    • ネット環境の影響がない
  23. 23 なぜEdgeAIが必要なのか まとめ • EdgeAI ◦ モバイルなどの上で機械学習の推論を行う技術 • EdgeAIによってレイテンシを大幅に小さくできる • インタラクティブなUXを実現できる

  24. 24 EdgeAIを用いた機能の開発

  25. 25 売れるかチェックの仕組み 画像検索 物体検出 画像送信 写真撮影 結果表示 検出結果確認

  26. 26 「かざす」UI実現のために 画像検索 物体検出 カメラ起動 結果表示

  27. 27 「かざす」UI実現のために 画像検索 物体検出 カメラ起動 結果表示 MLモデルを端末上で推論

  28. 28 Core ML モバイル上でのML推論用ライブラリ

  29. 29 Core ML • マルチプラットフォーム • 柔軟なランタイムオプション TensorFlow Lite を採用

    モバイル上でのML推論用ライブラリ
  30. 30 EdgeAIにおけるMLモデル • 学習データの作成 • MLモデルの学習 MLモデルの変換 数百MB~数GB 変換されたMLモデルを実行 10

    MB 程度
  31. 31 動画上での推論 動画入力 結果表示 推論 毎フレーム繰り返される 前処理 うまく制御しないとだんだん動画が遅れたりする

  32. 32 Mediapipe Google製のOSS 動画などストリーミングメディアでのML推論用ライブラリ

  33. 33 ストリーミングでの推論 各処理をノードとしたパイプラインを構築 ノードレベルで並列化が可能

  34. 34 動画上での推論 動画入力 結果表示 推論 前処理 N フレーム目 N+1 フレーム目

  35. 35 UI上の工夫 AI/MLは間違う • なぜこの値段なのか • 想像している値段と大きな差がある XXX円で売れます! かざすUIでは表示領域が狭いので注意が必要

  36. 36 スニーカー 売れている価格 XXX ~ △△△ 円 Nike エアマックス UI上の工夫

    AIが間違ったときに納得できるように 認識結果の情報を提示することで 間違っていた場合に納得感がある* 売れている価格の範囲であり 絶対の価格と思わせない * [J. Zhou et al. 2019] https://pair.withgoogle.com/
  37. 37 • MLモデルの推論 • ストリーミング処理 • お客様を混乱させないUI設計 EdgeAIを用いた機能の開発 まとめ TensorFlowLite Mediapipe

  38. 38 EdgeAIを支える技術

  39. 39 「かざす」UI実現のために 画像検索 物体検出 カメラ起動 結果表示

  40. 40 「かざす」UI実現のために 画像検索 物体検出 カメラ起動 結果表示 目標:100ms以内で推論

  41. 41 Edgeデバイス上でのモデル実行 オブジェクト検出モデル 例:SSDlite-mobilenetv2 前処理等も含むと不十分 device CPU Pixel3 120 msec

    Pixel4 90 msec
  42. 42 Java API Objective C API Core C Library Delegate

    GPU CPU CoreML NNAPI TensorFlow Liteのアーキテクチャ
  43. 43 • GPU ◦ iOS, Android両方をサポート • XNNPack ◦ iOS,

    Android両方:特定の行列演算をCPU上で高速化 • NNAPI ◦ Android向け:Pixel4ではEdgeTPUを利用できる • CoreML ◦ iOS向け:iPhone 11ではNPUが利用可能 TFLite でサポートされる Delegate
  44. 44 Edgeデバイス上でのモデル実行 オブジェクト検出モデル 例:SSDlite-mobilenetv2 device CPU GPU Pixel3 120 msec

    30 msec Pixel4 90 msec 13 msec
  45. 45 MediaPipeの公式サンプル https://google.github.io/mediapipe/solutions/box_tracking.html BoxTracking

  46. 46 BoxTrackingのパイプライン

  47. 47 BoxTrackingのパイプライン 検出されたオブジェクトをカメラの移動方向から 以前のフレームのオブジェクトと紐付ける フレームをまたいでオブジェクトを追 跡できる

  48. 48 出口に近いほど高優先度 パイプライン優先度

  49. 49 検出が終わるまで 入力を待つ 検出が途切れても なめらかな出力 滑らかな表示の工夫

  50. 50 類似カテゴリでも価格や売れやすさは違う 日々新しい商品が追加される 静的な分類器や端末上にIndexを持つことが困難 サーバ上で画像検索を行う必要がある メルカリでの問題:巨大かつ複雑な商品カテゴリ

  51. 51 アイテムを検出したタイミングで切り出してサーバに送る • 予期しない画像をサーバに送る可能性 • 画像のアップロードに時間がかかる 類似商品の検索

  52. 52 サーバ上の画像検索を使う懸念点 • 予期しない画像をサーバに送る可能性 • 画像のアップロードに時間がかかる 01110 11010 101.. 端末上で特徴量化して送信

    画像は復元できない 転送サイズ大幅削減 数百KB → 数KB 類似商品の検索
  53. 53 GPU CPU or NPU/TPU パイプラインの最適化

  54. 54 Before After

  55. 55 • Delegateによる推論の高速化 • 端末上で特徴量化まで行うことで ◦ プライバシーに配慮 ◦ 低レイテンシなサーバ呼び出し EdgeAIを支える技術まとめ

  56. 56 EdgeAIを支える技術を支える基盤

  57. 57 オブジェクト認識に使われるモデル • SSD-Mobilenetv2 [Sandler, Mark, et al. 2018] •

    SSD-Mobilenetv3-small [Howard, Andrew, et al. 2019] • SSD-MobileDet [Xiong, Yunyang, et al. 2020] EdgeにおけるMLモデルの選定 精度だけでは決められない
  58. 58 • モデルアーキテクチャ • 変換オプション • Delegation • デバイス EdgeにおけるMLモデルで意識すべきこと

  59. 59 • モデルアーキテクチャ • 変換オプション • Delegation • デバイス EdgeにおけるMLモデルで意識すべきこと

  60. 60 EdgeAIにおけるMLモデル • 学習データの作成 • MLモデルの学習 MLモデルの変換 数百MB~数GB 変換されたMLモデルを実行 10

    MB 程度
  61. 61 • FLOAT32 ◦ サーバでモデルを学習・推論するときと同じ • FLOAT16 ◦ 重みを単精度で表現することで軽量化 •

    Weight only quantization (UINT8) ◦ 重みをUINT8量子化 • Full quantization (UINT8) ◦ 重みと活性化関数を量子化 TF Liteの変換オプション
  62. 62 変換オプション サイズ レイテンシ 精度劣化 FLOAT32 ✕ △ なし FLOAT16

    △ △ 小 UINT8: weight only quant ◎ △ 中 UINT8: full quant ◯ ◎ 大 ※劣化の可能性が高い 変換オプションによる比較 ※
  63. 63 • モデルアーキテクチャ • 変換オプション • Delegation • デバイス EdgeにおけるMLモデルで意識すべきこと

  64. 64 Delegateオプションと実行デバイス Delegate • CPU • GPU • XNNPACK •

    NNAPI • CoreML iOS Android デバイスごとにCPU, GPUの性能は異なる [Wu, C. J., et. al. 2019]
  65. 65 EdgeにおけるMLモデルの選定 変換形式 Delegate デバイス モデル

  66. 66 EdgeにおけるMLモデルの選定 変換形式 Delegate デバイス モデル 自動化!

  67. 67 Edgeモデル検証用プラットフォーム

  68. 68 Edgeモデル検証用プラットフォーム

  69. 69 Kubernetes上にML基盤を構築するプロジェクト 複数のコンポーネントを持つ • Kubeflow pipeline ◦ 機械学習モデルの学習や評価のパイプラインの管理 • Kubeflow

    metadata ◦ 機械学習モデルのメタデータ管理
  70. 70 Edgeモデル検証用プラットフォーム

  71. 71 モデルの学習 モデルの評価 metadata保存 モデルの変換 ベンチマーク実行 ベンチマークを metadataに保存

  72. 72 Edgeモデル検証用プラットフォーム

  73. 73 精度比較と変換による劣化の検証 モデルA モデルB float16 float32 uint8

  74. 74 デバイスごとのベンチマーク iPhone 11 iPhone 8 CoreML GPU CPU XNNPack

  75. 75

  76. 76 メルカリのEdgeAIの取り組み UX設計 • EdgeAIでインタラクティブなUXを実現 • お客様を混乱させないUI設計 クライアントサイド • どこまでをクライアントサイドで行えるかの設計

    • ms単位の最適化 バックエンド • 広範なデバイスをサポートするためのプラットフォーム
  77. 77 今回お話できなかったこと • KPI設計とリリース後の監視・改善 • クライアントサイドのモデル更新

  78. 78