Mercari Gears lecture session にて利用したスライドです。 https://www.youtube.com/watch?v=kKL0RKd34a0
メルカリにおけるEdgeAIの活用@y-oshima
View Slide
2多くの機能をリリース● 検索の改善● 画像検索● 違反出品検知● AI出品● レコメンデーションMercariにおける機械学習の取り組み機械学習プラットフォーム
3EdgeAIモバイルのようなデバイス上で機械学習の推論を行う技術
4
5Agenda● なぜEdgeAIが必要なのか● EdgeAIを用いた機能の開発● EdgeAIを支える技術● EdgeAIを支える技術を支える基盤
6なぜEdgeAIが必要なのか
7売れるかチェックアイテムを撮影すると● 売れている価格平均● 売り切れ率がわかるUXを改善し利用率を上げたい
8利用率を向上のために結果表示タップ領域検出写真撮影カメラ画面売れるかチェックのステップ
9利用率を向上のために結果表示タップ物体認識写真撮影カメラ画面各ステップの遷移率をログから集計ここでやめてしまうお客様が多い写真の撮影は想定以上にハードルが高いのでは?写真撮影のステップをなくせないか
10「かざす」UIスニーカー〇〇円
11● 応答性○ 素早く結果を返せるか● 連続性○ 状態の遷移が連続的か● フィードバック○ アクションの結果が伝わるか● 柔軟性○ 変更を加えるのが容易かUIの評価指標[Aagesen, P. T., & Heyer, C. 2016]
12応答性結果表示タップ領域検出写真撮影カメラ画面1秒 1秒
13応答性スニーカー〇〇円かざした瞬間結果が出る応答性 高
14連続性結果表示タップ領域検出写真撮影カメラ画面画面遷移 画面遷移
15連続性スニーカー〇〇円物体検出や結果表示に画面遷移がない連続性 高
16フィードバック結果表示タップ領域検出写真撮影カメラ画面画面遷移の後でしかフィードバックが得られない
17フィードバックスニーカー〇〇円注目されたアイテムや結果が即座にわかるフィードバック 高
18柔軟性結果表示タップ領域検出写真撮影カメラ画面写真の修正は撮影のやり直し
19柔軟性サングラス△△円カメラを動かすだけで別のアイテムに移る柔軟性 高
20「かざす」UI実現の課題② 物体検出や画像検索① 写真を送信 ③ 結果を返すサーバで推論を行う場合全体で1sec程度ネットワークの影響を受ける
21「かざす」UI実現の課題サーバで推論を行う場合滑らかな体験を実現するためには100 msec 未満が理想[Card, S. K., Robertson, G. G., & Mackinlay, J. D. (1991, March)]サーバでの推論では間に合わない
22Edge AI1 sec 〜〜 50ms● 100ms未満を実現可能● ネット環境の影響がない
23なぜEdgeAIが必要なのか まとめ● EdgeAI○ モバイルなどの上で機械学習の推論を行う技術● EdgeAIによってレイテンシを大幅に小さくできる● インタラクティブなUXを実現できる
24EdgeAIを用いた機能の開発
25売れるかチェックの仕組み画像検索物体検出画像送信写真撮影 結果表示検出結果確認
26「かざす」UI実現のために画像検索物体検出カメラ起動 結果表示
27「かざす」UI実現のために画像検索物体検出カメラ起動 結果表示MLモデルを端末上で推論
28Core MLモバイル上でのML推論用ライブラリ
29Core ML● マルチプラットフォーム● 柔軟なランタイムオプションTensorFlow Lite を採用モバイル上でのML推論用ライブラリ
30EdgeAIにおけるMLモデル● 学習データの作成● MLモデルの学習MLモデルの変換数百MB~数GB変換されたMLモデルを実行10 MB 程度
31動画上での推論動画入力 結果表示推論毎フレーム繰り返される前処理うまく制御しないとだんだん動画が遅れたりする
32MediapipeGoogle製のOSS動画などストリーミングメディアでのML推論用ライブラリ
33ストリーミングでの推論各処理をノードとしたパイプラインを構築ノードレベルで並列化が可能
34動画上での推論動画入力 結果表示推論前処理N フレーム目N+1 フレーム目
35UI上の工夫AI/MLは間違う● なぜこの値段なのか● 想像している値段と大きな差があるXXX円で売れます!かざすUIでは表示領域が狭いので注意が必要
36スニーカー売れている価格XXX ~ △△△ 円Nike エアマックスUI上の工夫AIが間違ったときに納得できるように認識結果の情報を提示することで間違っていた場合に納得感がある*売れている価格の範囲であり絶対の価格と思わせない* [J. Zhou et al. 2019]https://pair.withgoogle.com/
37● MLモデルの推論● ストリーミング処理● お客様を混乱させないUI設計EdgeAIを用いた機能の開発 まとめTensorFlowLiteMediapipe
38EdgeAIを支える技術
39「かざす」UI実現のために画像検索物体検出カメラ起動 結果表示
40「かざす」UI実現のために画像検索物体検出カメラ起動 結果表示目標:100ms以内で推論
41Edgeデバイス上でのモデル実行オブジェクト検出モデル例:SSDlite-mobilenetv2前処理等も含むと不十分device CPUPixel3 120 msecPixel4 90 msec
42Java API Objective C APICore C LibraryDelegateGPUCPUCoreMLNNAPITensorFlow Liteのアーキテクチャ
43● GPU○ iOS, Android両方をサポート● XNNPack○ iOS, Android両方:特定の行列演算をCPU上で高速化● NNAPI○ Android向け:Pixel4ではEdgeTPUを利用できる● CoreML○ iOS向け:iPhone 11ではNPUが利用可能TFLite でサポートされる Delegate
44Edgeデバイス上でのモデル実行オブジェクト検出モデル例:SSDlite-mobilenetv2device CPU GPUPixel3 120 msec 30 msecPixel4 90 msec 13 msec
45MediaPipeの公式サンプルhttps://google.github.io/mediapipe/solutions/box_tracking.htmlBoxTracking
46BoxTrackingのパイプライン
47BoxTrackingのパイプライン検出されたオブジェクトをカメラの移動方向から以前のフレームのオブジェクトと紐付けるフレームをまたいでオブジェクトを追跡できる
48出口に近いほど高優先度パイプライン優先度
49検出が終わるまで入力を待つ検出が途切れてもなめらかな出力滑らかな表示の工夫
50類似カテゴリでも価格や売れやすさは違う 日々新しい商品が追加される静的な分類器や端末上にIndexを持つことが困難サーバ上で画像検索を行う必要があるメルカリでの問題:巨大かつ複雑な商品カテゴリ
51アイテムを検出したタイミングで切り出してサーバに送る● 予期しない画像をサーバに送る可能性● 画像のアップロードに時間がかかる類似商品の検索
52サーバ上の画像検索を使う懸念点● 予期しない画像をサーバに送る可能性● 画像のアップロードに時間がかかる0111011010101..端末上で特徴量化して送信画像は復元できない転送サイズ大幅削減数百KB → 数KB類似商品の検索
53GPUCPU or NPU/TPUパイプラインの最適化
54Before After
55● Delegateによる推論の高速化● 端末上で特徴量化まで行うことで○ プライバシーに配慮○ 低レイテンシなサーバ呼び出しEdgeAIを支える技術まとめ
56EdgeAIを支える技術を支える基盤
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● モデルアーキテクチャ● 変換オプション● Delegation● デバイスEdgeにおけるMLモデルで意識すべきこと
59● モデルアーキテクチャ● 変換オプション● Delegation● デバイスEdgeにおけるMLモデルで意識すべきこと
60EdgeAIにおけるMLモデル● 学習データの作成● MLモデルの学習MLモデルの変換数百MB~数GB変換されたMLモデルを実行10 MB 程度
61● FLOAT32○ サーバでモデルを学習・推論するときと同じ● FLOAT16○ 重みを単精度で表現することで軽量化● Weight only quantization (UINT8)○ 重みをUINT8量子化● Full quantization (UINT8)○ 重みと活性化関数を量子化TF Liteの変換オプション
62変換オプション サイズ レイテンシ 精度劣化FLOAT32 ✕ △ なしFLOAT16 △ △ 小UINT8: weight only quant ◎ △ 中UINT8: full quant ◯ ◎ 大※劣化の可能性が高い変換オプションによる比較※
63● モデルアーキテクチャ● 変換オプション● Delegation● デバイスEdgeにおけるMLモデルで意識すべきこと
64Delegateオプションと実行デバイスDelegate● CPU● GPU● XNNPACK● NNAPI● CoreMLiOSAndroidデバイスごとにCPU, GPUの性能は異なる[Wu, C. J., et. al. 2019]
65EdgeにおけるMLモデルの選定変換形式 Delegate デバイスモデル
66EdgeにおけるMLモデルの選定変換形式 Delegate デバイスモデル自動化!
67Edgeモデル検証用プラットフォーム
68Edgeモデル検証用プラットフォーム
69Kubernetes上にML基盤を構築するプロジェクト複数のコンポーネントを持つ● Kubeflow pipeline○ 機械学習モデルの学習や評価のパイプラインの管理● Kubeflow metadata○ 機械学習モデルのメタデータ管理
70Edgeモデル検証用プラットフォーム
71モデルの学習モデルの評価metadata保存モデルの変換ベンチマーク実行ベンチマークをmetadataに保存
72Edgeモデル検証用プラットフォーム
73精度比較と変換による劣化の検証モデルA モデルBfloat16float32uint8
74デバイスごとのベンチマークiPhone 11 iPhone 8CoreMLGPUCPUXNNPack
75
76メルカリのEdgeAIの取り組みUX設計● EdgeAIでインタラクティブなUXを実現● お客様を混乱させないUI設計クライアントサイド● どこまでをクライアントサイドで行えるかの設計● ms単位の最適化バックエンド● 広範なデバイスをサポートするためのプラットフォーム
77今回お話できなかったこと● KPI設計とリリース後の監視・改善● クライアントサイドのモデル更新
78