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

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

oshima
September 14, 2021

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

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

oshima

September 14, 2021
Tweet

More Decks by oshima

Other Decks in Technology

Transcript

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

    View Slide

  2. 2
    多くの機能をリリース
    ● 検索の改善
    ● 画像検索
    ● 違反出品検知
    ● AI出品
    ● レコメンデーション
    Mercariにおける機械学習の取り組み
    機械学習プラットフォーム

    View Slide

  3. 3
    EdgeAI
    モバイルのようなデバイス上で機械学習の推論を行う技術

    View Slide

  4. 4

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 10
    「かざす」UI
    スニーカー
    〇〇円

    View Slide

  11. 11
    ● 応答性
    ○ 素早く結果を返せるか
    ● 連続性
    ○ 状態の遷移が連続的か
    ● フィードバック
    ○ アクションの結果が伝わるか
    ● 柔軟性
    ○ 変更を加えるのが容易か
    UIの評価指標
    [Aagesen, P. T., & Heyer, C. 2016]

    View Slide

  12. 12
    応答性
    結果表示
    タップ
    領域検出
    写真撮影
    カメラ画面
    1秒 1秒

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 21
    「かざす」UI実現の課題
    サーバで推論を行う場合
    滑らかな体験を実現するためには
    100 msec 未満が理想
    [Card, S. K., Robertson, G. G., & Mackinlay, J. D. (1991, March)]
    サーバでの推論では間に合わない

    View Slide

  22. 22
    Edge AI
    1 sec 〜
    〜 50ms
    ● 100ms未満を実現可能
    ● ネット環境の影響がない

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. 29
    Core ML
    ● マルチプラットフォーム
    ● 柔軟なランタイムオプション
    TensorFlow Lite を採用
    モバイル上でのML推論用ライブラリ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. 36
    スニーカー
    売れている価格
    XXX ~ △△△ 円
    Nike エアマックス
    UI上の工夫
    AIが間違ったときに納得できるように
    認識結果の情報を提示することで
    間違っていた場合に納得感がある*
    売れている価格の範囲であり
    絶対の価格と思わせない
    * [J. Zhou et al. 2019]
    https://pair.withgoogle.com/

    View Slide

  37. 37
    ● MLモデルの推論
    ● ストリーミング処理
    ● お客様を混乱させないUI設計
    EdgeAIを用いた機能の開発 まとめ
    TensorFlowLite
    Mediapipe

    View Slide

  38. 38
    EdgeAIを支える技術

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  42. 42
    Java API Objective C API
    Core C Library
    Delegate
    GPU
    CPU
    CoreML
    NNAPI
    TensorFlow Liteのアーキテクチャ

    View Slide

  43. 43
    ● GPU
    ○ iOS, Android両方をサポート
    ● XNNPack
    ○ iOS, Android両方:特定の行列演算をCPU上で高速化
    ● NNAPI
    ○ Android向け:Pixel4ではEdgeTPUを利用できる
    ● CoreML
    ○ iOS向け:iPhone 11ではNPUが利用可能
    TFLite でサポートされる Delegate

    View Slide

  44. 44
    Edgeデバイス上でのモデル実行
    オブジェクト検出モデル
    例:SSDlite-mobilenetv2
    device CPU GPU
    Pixel3 120 msec 30 msec
    Pixel4 90 msec 13 msec

    View Slide

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

    View Slide

  46. 46
    BoxTrackingのパイプライン

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. 52
    サーバ上の画像検索を使う懸念点
    ● 予期しない画像をサーバに送る可能性
    ● 画像のアップロードに時間がかかる
    01110
    11010
    101..
    端末上で特徴量化して送信
    画像は復元できない
    転送サイズ大幅削減
    数百KB → 数KB
    類似商品の検索

    View Slide

  53. 53
    GPU
    CPU or NPU/TPU
    パイプラインの最適化

    View Slide

  54. 54
    Before After

    View Slide

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

    View Slide

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

    View Slide

  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モデルの選定
    精度だけでは決められない

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  61. 61
    ● FLOAT32
    ○ サーバでモデルを学習・推論するときと同じ
    ● FLOAT16
    ○ 重みを単精度で表現することで軽量化
    ● Weight only quantization (UINT8)
    ○ 重みをUINT8量子化
    ● Full quantization (UINT8)
    ○ 重みと活性化関数を量子化
    TF Liteの変換オプション

    View Slide

  62. 62
    変換オプション サイズ レイテンシ 精度劣化
    FLOAT32 ✕ △ なし
    FLOAT16 △ △ 小
    UINT8: weight only quant ◎ △ 中
    UINT8: full quant ◯ ◎ 大
    ※劣化の可能性が高い
    変換オプションによる比較

    View Slide

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

    View Slide

  64. 64
    Delegateオプションと実行デバイス
    Delegate
    ● CPU
    ● GPU
    ● XNNPACK
    ● NNAPI
    ● CoreML
    iOS
    Android
    デバイスごとにCPU, GPUの性能は異なる
    [Wu, C. J., et. al. 2019]

    View Slide

  65. 65
    EdgeにおけるMLモデルの選定
    変換形式 Delegate デバイス
    モデル

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  75. 75

    View Slide

  76. 76
    メルカリのEdgeAIの取り組み
    UX設計
    ● EdgeAIでインタラクティブなUXを実現
    ● お客様を混乱させないUI設計
    クライアントサイド
    ● どこまでをクライアントサイドで行えるかの設計
    ● ms単位の最適化
    バックエンド
    ● 広範なデバイスをサポートするためのプラットフォーム

    View Slide

  77. 77
    今回お話できなかったこと
    ● KPI設計とリリース後の監視・改善
    ● クライアントサイドのモデル更新

    View Slide

  78. 78

    View Slide