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

CoreMLで実現する爆速のARサイズ計測

Beef2647567dd5b666fee8c97b0aee3e?s=47 Kohei Arai
September 06, 2019

 CoreMLで実現する爆速のARサイズ計測

9/6(金)に行われたiOSDC 2019でのLT資料です。

Beef2647567dd5b666fee8c97b0aee3e?s=128

Kohei Arai

September 06, 2019
Tweet

More Decks by Kohei Arai

Other Decks in Technology

Transcript

  1. iOSDC 2019 CoreMLで実現する 爆速のARサイズ計測 Kohei Arai @kokoheia

  2. Kohei Arai @kokoheia • Mercari / 新卒 iOS Engineer •

    Twitter: @kokoheia • Instagram: @kokoheia • ポートレートを撮るのが趣味です • 最近PUBGにハマっています
  3. 突然ですが、みなさん こんな経験をしたことは ありませんか?

  4. 「フリマアプリで洋服を出品したい!」

  5. 特に、洋服の「サイズ」を載せたい (コメントで聞かれた。。)

  6. そうだ、AR Measureで 測ってみよう!

  7. 。。。。

  8. 。。。結構面倒くさい • そもそも測る場所がわからない • 測り方が合ってるか自信ない • 何枚も出品したいけど時間かけたくない。。

  9. IN THE NEXT FIVE MONTHS ARメジャーの課題 • ARの体験に慣れるのに時間がかかる • 大きいものを測るのが大変

    • メジャーを代替しただけなので計測にかか る時間はあまり変わらず Item 1 Item 2 Item 3 Item 4 Item 5 40 30 20 10 0
  10. テクノロジーを使って もっと簡単に測ることは できないか!?

  11. ML(機械学習) ✖AR で 爆速 & 超簡単にサイズ計測する

  12. Demo

  13. None
  14. 仕組み 画像を撮影 ML(機械学習)で 画像内の特徴点の座標を 推定 特徴点の座標を元に AR Kitを使って現実世界 のスケールを得る。

  15. MLモデル created by ARヒノボル / @liketableteninu 姿勢推定のモデルを応用 Alibabaのデータセット

  16. 2Dの推定 3Dの推定(AR) 仕組み

  17. どれくらい 速くなったのか?

  18. 測定した対象 袖丈、肩幅、身幅、着丈の4点 出典: https://minne.com/items/17640623

  19. サイズ計測にかかる時間 自力 ML + AR 40 ~ 50秒 10 ~

    15秒
  20. もっと速くしたい!

  21. CoreMLを使って サーバレスで推定

  22. Demo 2: CoreML

  23. None
  24. サイズ計測にかかる時間 自力 AR + ML (サーバー) 40 ~ 50秒 10

    ~ 15秒 AR + CoreML 5秒未満
  25. MLモデルの生成 Created by ARヒノボル / @liketableteninu

  26. 推定の精度 サーバー CoreML 身幅 2cm以内 2cm以内 着丈 5cm以内 5cm以内 袖丈

    10cm前後 10cm前後 肩幅 10cm前後 10cm前後 推定しやすい 推定しづらい
  27. • モデル自体を改善する ◦ カテゴリごとの画像の数を増やして学習する • 物体認識の精度をあげる (for CoreML) ◦ 機械学習で物体認識してから、その範囲内で推定すると精度が上がる

    精度を改善するために
  28. ML ✖ AR Measureの可能性 • 人間のサイズも測定できる → 服と照らし合わせてフィット度を計測する • 靴やインテリアなど、服以外の商品にも応用が可能

  29. ご清聴ありがとうございました!

  30. おまけ

  31. 推定の速度 サーバー(GPU) サーバー(CPU) CoreML 2 ~ 3秒以下 6秒程度 1秒以下

  32. 月あたりコスト(一例) サーバー(GPU) サーバー(CPU) CoreML 約68,000円 / 台 約13,000円 / 台

    無料 GPUはaws p2.xlarge, CPUはaws c5xlargeを参照。 GPU: 0.9(USD/hr) * 24 hrs * 30 days * 105(JPY/USD) = 68,040JPY CPU: 0.17(USD/hr) * 24 hrs * 30 days * 105(JPY/USD) = 12,852JPY
  33. Pytorchからモデルを変換した理由 • Turi Create や Create MLでモデルを作ることも 検討した • Pythonで書かれた機械学習用のライブラリに比

    べるとできる処理も限られていたためPytorchか らの変換を採用
  34. 非同期のHit Test処理

  35. 非同期のHit Test処理のTips Hit Testには3種類ある • ARSCNView hitTest(_ point: CGPoint, types:

    ARHitTestResult.ResultType) -> [ARHitTestResult] • ARSKView hitTest(_ point: CGPoint, types: ARHitTestResult.ResultType) -> [ARHitTestResult] • ARFrame hitTest(_ point: CGPoint, types: ARHitTestResult.ResultType) -> [ARHitTestResult]
  36. 非同期のHit Test処理のTips • 画像をサーバに送りレスポンスが帰ってくるのを待たなくては行 けなかった • 今回は画像撮影時のARFrameを保存しておいて、レスポンスが 帰ってきてから、保存済みのARFrameからhitTest処理をするとい う実装をした •

    最初、予想した結果とはるかに異なる点がプロットされて戸惑っ た
  37. 非同期のHit Test処理のTips ARFrameを使ってhitTestをするときは、結果をinvertしないといけなかった

  38. 参考 • https://www.digitaltrends.com/mobile/how-to-use-the-measure-app-in-ios-12/ • https://github.com/matterport/Mask_RCNN • https://github.com/LiMeng95/MultiPoseNet.pytorch • https://tianchi.aliyun.com/mobile/gameDetail/231670 •

    https://qiita.com/kamata1729/items/e54bcb7d0ed3d296daf8 • https://aws.amazon.com/jp/emr/pricing/ • https://pytorch.org/ • https://github.com/onnx/onnx • https://github.com/onnx/onnx-coreml • https://developer.apple.com/documentation/arkit/arframe/2875718-hittest