Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CoreMLで実現する爆速のARサイズ計測
Search
Kohei Arai
September 06, 2019
Technology
1
1.8k
CoreMLで実現する爆速のARサイズ計測
9/6(金)に行われたiOSDC 2019でのLT資料です。
Kohei Arai
September 06, 2019
Tweet
Share
More Decks by Kohei Arai
See All by Kohei Arai
VisionKit_Basics.pdf
kokoheia
0
170
Swift5_Cheet_Sheet.pdf
kokoheia
7
1.3k
Other Decks in Technology
See All in Technology
定期的な価値提供だけじゃない、スクラムが導くチームの共創化 / 20251004 Naoki Takahashi
shift_evolve
PRO
3
300
KMP の Swift export
kokihirokawa
0
330
生成AIとM5Stack / M5 Japan Tour 2025 Autumn 東京
you
PRO
0
220
Why Governance Matters: The Key to Reducing Risk Without Slowing Down
sarahjwells
0
110
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
upamune
1
420
Access-what? why and how, A11Y for All - Nordic.js 2025
gdomiciano
1
110
extension 現場で使えるXcodeショートカット一覧
ktombow
0
210
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
77k
Trust as Infrastructure
bcantrill
0
340
How to achieve interoperable digital identity across Asian countries
fujie
0
120
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
980
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
6
3.5k
Featured
See All Featured
Balancing Empowerment & Direction
lara
4
680
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
The Invisible Side of Design
smashingmag
301
51k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Practical Orchestrator
shlominoach
190
11k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
4 Signs Your Business is Dying
shpigford
185
22k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
The Language of Interfaces
destraynor
162
25k
Building an army of robots
kneath
306
46k
Transcript
iOSDC 2019 CoreMLで実現する 爆速のARサイズ計測 Kohei Arai @kokoheia
Kohei Arai @kokoheia • Mercari / 新卒 iOS Engineer •
Twitter: @kokoheia • Instagram: @kokoheia • ポートレートを撮るのが趣味です • 最近PUBGにハマっています
突然ですが、みなさん こんな経験をしたことは ありませんか?
「フリマアプリで洋服を出品したい!」
特に、洋服の「サイズ」を載せたい (コメントで聞かれた。。)
そうだ、AR Measureで 測ってみよう!
。。。。
。。。結構面倒くさい • そもそも測る場所がわからない • 測り方が合ってるか自信ない • 何枚も出品したいけど時間かけたくない。。
IN THE NEXT FIVE MONTHS ARメジャーの課題 • ARの体験に慣れるのに時間がかかる • 大きいものを測るのが大変
• メジャーを代替しただけなので計測にかか る時間はあまり変わらず Item 1 Item 2 Item 3 Item 4 Item 5 40 30 20 10 0
テクノロジーを使って もっと簡単に測ることは できないか!?
ML(機械学習) ✖AR で 爆速 & 超簡単にサイズ計測する
Demo
None
仕組み 画像を撮影 ML(機械学習)で 画像内の特徴点の座標を 推定 特徴点の座標を元に AR Kitを使って現実世界 のスケールを得る。
MLモデル created by ARヒノボル / @liketableteninu 姿勢推定のモデルを応用 Alibabaのデータセット
2Dの推定 3Dの推定(AR) 仕組み
どれくらい 速くなったのか?
測定した対象 袖丈、肩幅、身幅、着丈の4点 出典: https://minne.com/items/17640623
サイズ計測にかかる時間 自力 ML + AR 40 ~ 50秒 10 ~
15秒
もっと速くしたい!
CoreMLを使って サーバレスで推定
Demo 2: CoreML
None
サイズ計測にかかる時間 自力 AR + ML (サーバー) 40 ~ 50秒 10
~ 15秒 AR + CoreML 5秒未満
MLモデルの生成 Created by ARヒノボル / @liketableteninu
推定の精度 サーバー CoreML 身幅 2cm以内 2cm以内 着丈 5cm以内 5cm以内 袖丈
10cm前後 10cm前後 肩幅 10cm前後 10cm前後 推定しやすい 推定しづらい
• モデル自体を改善する ◦ カテゴリごとの画像の数を増やして学習する • 物体認識の精度をあげる (for CoreML) ◦ 機械学習で物体認識してから、その範囲内で推定すると精度が上がる
精度を改善するために
ML ✖ AR Measureの可能性 • 人間のサイズも測定できる → 服と照らし合わせてフィット度を計測する • 靴やインテリアなど、服以外の商品にも応用が可能
ご清聴ありがとうございました!
おまけ
推定の速度 サーバー(GPU) サーバー(CPU) CoreML 2 ~ 3秒以下 6秒程度 1秒以下
月あたりコスト(一例) サーバー(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
Pytorchからモデルを変換した理由 • Turi Create や Create MLでモデルを作ることも 検討した • Pythonで書かれた機械学習用のライブラリに比
べるとできる処理も限られていたためPytorchか らの変換を採用
非同期のHit Test処理
非同期の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]
非同期のHit Test処理のTips • 画像をサーバに送りレスポンスが帰ってくるのを待たなくては行 けなかった • 今回は画像撮影時のARFrameを保存しておいて、レスポンスが 帰ってきてから、保存済みのARFrameからhitTest処理をするとい う実装をした •
最初、予想した結果とはるかに異なる点がプロットされて戸惑っ た
非同期のHit Test処理のTips ARFrameを使ってhitTestをするときは、結果をinvertしないといけなかった
参考 • 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