๋ฏธ๊ตญ ํผ๋๋ํ๊ต ์ธํด์ญ ํ๋ก๊ทธ๋จ์ ์ฐธ์ฌํ๊ฒ ๋๋ฉด์ 4๊ฐ์๋์ ํํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋์์ต๋๋ค.
์ธ๊ณต์ง๋ฅ ๊ฐ๋ฐ์์ ํจ๊ป ํ์ ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋์๋๋ฐ ์ฃผ์ ๋
Vision AI๋ฅผ ์ด์ฉํ์ฌ ์์ ์ ์ค์ฒ๋ฅผ ์ธ์ ํ ๋ค ๋๋ก ์ ์กฐ์ข ํ๋ iOS ์ฑ ์ ๋๋ค.
ํ๋จ์ ๊ตฌ์กฐ๋์์ ์ ์ ์๋ฏ์ด, ์ธ๊ณต์ง๋ฅ ๊ฐ๋ฐ์๊ฐ MediaPipe๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ฐํ ๋ชจ๋ธ์ iOS์ฑ์ ๋ฃ์ด ์ค์๊ฐ ์ ์์์ ์ ์ค์ฒ๋ฅผ ์ธ์ํ๊ณ ์์ผ ํต์ ์ ํตํด ๋๋ก ์๊ฒ ์กฐ์ข ์ ํธ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด ์ ์ฒด ๊ตฌ์กฐ์ ๋๋ค.
iOS ์ฑ ๊ตฌ์กฐ๋
AVFoundation์ ํตํด ์ ์์์ ํ๋ ์๋ค์ AI ๋ชจ๋ธ์ ๋ฃ๊ณ ์ธ์ ๋ ์ ์ค์ฒ์ ์ ํธ๋ฅผ ์์ผ ํต์ ์ ํตํด ๋๋ก ์ ๋ณด๋ ๋๋ค. ๋ํ ๋๋ก ์์ ์ดฌ์ ๋๊ณ ์๋ ์์๋ค์ ์์ผ ํต์ ์ ํตํด iOS์ฑ์์ ์ค์๊ฐ์ผ๋ก ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ผ ์ง๊ธ๋ถํฐ ์ ์ฒด ๊ฐ๋ฐ ๊ณผ์ ์ ์ดํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1. ์ธ๊ณต์ง๋ฅ ๋ชจ๋ธ ๊ฐ๋ฐํ๊ธฐ
๋จผ์ , ์ธ๊ณต์ง๋ฅ ๊ฐ๋ฐ์๊ฐ iOS์ฑ์ ๋ค์ด๊ฐ๊ฒ ๋ ๋ชจ๋ธ์ ๊ฐ๋ฐํฉ๋๋ค.
Google์ MediaPipe ํ๋ ์์ํฌ๋ฅผ ํ์ฉํ์ฌ ์นด๋ฉ๋ผ ์์ ์ ์์ ํน์ง์ ๋๋๋งํฌ ์ขํ๊ฐ์ ์ป์ด๋ธ ๋ค ์ด ์ขํ๊ฐ๋ค์ ์๋์ขํ๊ฐ์ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฃ์ผ๋ฉด ์์ ์ ์ค์ณ๋ฅผ ๋ถ๋ฅํ๋ ๋ชจ๋ธ์ ๊ฐ๋ฐํฉ๋๋ค.
XGBoost,LightGBM ๋ฑ์ ์ด์ฉํ์ฌ ๊ฐ๋ฐํ์์ต๋๋ค. ์ธ๊ณต์ง๋ฅ ๊ฐ๋ฐ์์ ๊ฐ๋ฐ ๋ถ๋ถ์ด๋ฏ๋ก ๊ฐ๋ตํ ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ์ถํ์ ๊ฐ๋ฅํ๋ฉด ์์ธ ์ค๋ช ํฌ์คํ ์ ์ถ๊ฐํ๋๋ก ํ๊ฒ ์ต๋๋ค.
2. ๊ฐ๋ฐ ๋ AI ๋ชจ๋ธ์ .coreml ํ์์ผ๋ก ๋ณํํ๊ธฐ
์์์ ๊ฐ๋ฐํ ๋ชจ๋ธ์ iOS์ฑ์ ๋ฃ์ด์ผ ํฉ๋๋ค. ์์ ์ ์ค์ฒ๋ฅผ ์ค์๊ฐ์ผ๋ก AI๋ฅผ ํตํด ๋ถ๋ฅ ํ ๋ค ์์ผ ํต์ ์ ํตํด ์ค์๊ฐ์ผ๋ก ๋๋ก ์ ์กฐ์ข ํ๊ธฐ ์ํด์๋ ์๋ฒ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ฑ ์์ฒด ๋ด์ ๋ชจ๋ธ์ ์ง์ ๋ฃ๋ ๊ฒ์ด ๋ถ๊ฐํผํฉ๋๋ค.
TensorFlow๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ ๋ ๋ชจ๋ธ์ iOS ์ฑ์ ๋ฃ๊ธฐ ์ํด์๋ iOS AI ํ๋ ์์ํฌ์ธ CoreML์ ์ฌ์ฉ๋๋ ๋ชจ๋ธ ํ์์ธ .coreml๋ก ๋ณํํด์ค์ผํฉ๋๋ค.
์ด๋ฅผ ๋ณํํ๊ธฐ ์ํด์๋ coremltools ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ์ผ ํฉ๋๋ค.
๊ตฌ๊ธ๋ง์ ํตํด์ ํด๊ฒฐ์ด ์๋๋ ๋ถ๋ถ์ด ๋ง์๋๋ฐ ํด๋น ๋ฌธ์๋ฅผ ํตํด ๋ชจ๋ธ์ ์ข ๋ฅ์ ๋ฐ๋ผ ์์ฑ๊ฐ๋ค์ ์ค์ ํด์ค์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด์ ๋ฌธ์๋ฅผ ์ ์ฝ์ผ๋ฉด ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ coreml๋ก์ ๋ณํ์ ๋งฅ๋ถ์์๋ง ๊ฐ๋ฅํฉ๋๋ค.
Core ML - ๋จธ์ ๋ฌ๋ - Apple Developer
Core ML - ๋จธ์ ๋ฌ๋ - Apple Developer
์ฑ์ ์ต์ฒจ๋จ ๋ชจ๋ธ์ ํตํฉํ๊ณ Core ML์ ์ฌ์ฉํ์ฌ ์จ๋๋ฐ์ด์ค ํ์ต์ ํ์ฉํด ๋ณด์ญ์์ค.
developer.apple.com
Core ML Tools Overview
Use Core ML Tools to convert models from third-party libraries to Core ML.
coremltools.readme.io
3. iOS ์ฑ์ Google MediaPipe Framework ๋ฃ๊ธฐ
์ด ํ๋ก์ ํธ๋ฅผ ์ํด ๊ฐ๋ฐ ๋ ๋ชจ๋ธ์ MediaPipe๋ฅผ ํตํด ์ป์ด์ง ์ขํ๊ฐ์ ์ ๋ ฅ๊ฐ์ผ๋ก ํ์๋ก ํ๊ธฐ ๋๋ฌธ์ iOS ์ฑ์์๋ ์ด ์ขํ๊ฐ์ ์ป๊ธฐ ์ํด์๋ MediaPipeํ๋ ์์ํฌ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค.
๋จผ์ MediaPipe๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ฒ ์ต๋๋ค.
MediaPipe ๋?
MediaPipe๋ Google์ด ์ ๊ณตํ๋ ๋จธ์ ๋ฌ๋ ํ๋ ์์ํฌ์ ๋๋ค.
์จ๋๋ฐ์ด์ค์ ์ด์ ์ ๋ง์ถ์ด MediaPipe์๋ ๋ชจ๋ฐ์ผ(Android, iOS), ์น, ๋ฐ์คํฌํฑ, ๋ฐ IoT ๋ฑ์์ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ํด์ค๋๋ค.
์ค๋์คํ์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ ๋ค์ํ ๋น์ AI ๊ธฐ๋ฅ์ ํ์ดํ๋ผ์ธ ํํ๋ก ์์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณต๋ฉ๋๋ค.
์ธ์ฒด๋ฅผ ๋์์ผ๋ก ํ๋ detect(์ธ์)์ ๋ํด์ ์ผ๊ตด์ธ์, ํฌ์ฆ, ๊ฐ์ฒด๊ฐ์ง, ๋ชจ์ ํธ๋ ํน ๋ฑ ๋ค์ํ ํํ์ ๊ธฐ๋ฅ๊ณผ ๋ชจ๋ธ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ๋ก, python ์ด์ธ์๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ธ์ด์ ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ ๊ณต๋ฉ๋๋ค.
์์์ ๋งํ ๊ฒ ์ฒ๋ผ ๊ตฌ๊ธ์ ์จ๋๋ฐ์ด์ค๋ฅผ ์ํ ํธ๋ฆฌํ ML Solution์ ์ ๊ณตํ๊ณ ์๋ค๊ณ ํฉ๋๋ค.
ํ์ง๋ง, ์๊ฐ๊ณผ ๋ฌ๋ฆฌ iOS์์๋ ์ฝ์ง ์์์ต๋๋ค.
iOS์์์ ๊ตฌ๊ธ ํ๋ ์์ํฌ MediaPipe.. = ๊ณ ๊ตฐ๋ถํฌ
์ผ๋จ MediaPipe๋ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ Solution ํํ์ ์ฌ์ฉ์๊ฐ ๋ณ๋์ ์ค์ ์ ํด์ฃผ์ด ํ์ํ ๋ถ๋ถ์ ๊ฐ์ ธ๋ค ๋น๋ํด์ผํ๋ Framework ํํ๋ก ์ ๊ณตํ๊ณ ์๋๋ฐ iOS๋ Solution ํํ๋ฅผ ์ ๊ณตํด์ฃผ์ง ์๊ณ ์์ต๋๋ค.
๋์ค์ ์ถ๊ฐ๋๋ฉด ์ข๊ฒ ์ง๋ง ๊ตฌ๊ธ์ด iOS๊น์ง ํฌ๊ฒ ์ ๊ฒฝ์ฐ๊ธฐ์๋ ์ด๋ ค์ธ ์ ๋ฐ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฌผ๋ก ๋คํํ ํ๋ ์์ํฌ์ ํํ๋ก ๋ฏธ๋์ดํ์ดํ๋ฅผ iOS์์ ์ธ ์ ์์ต๋๋ค.
ํ์ง๋ง iOS์ legacy์ธ์ด์ธ objective-c ํํ๋ก ์ ๊ณตํ๊ณ ์๊ณ ๋น๋ ํ์ผ์ ์ฌ์ฉ์์ ์ฉ๋์ ๋ง๊ฒ ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผ ๋ฐ๊พผ ๋ค google build tool ์ธ bazel์ ์ด์ฉํ์ฌ ๋น๋ ํด์ค์ผ ํ๋๋ฐ
๋๋ถ๋ถ์ iOS ๊ฐ๋ฐ์์๊ฒ objective-c๋ ๋ฏ์ ๋ฐ๋ค๊ฐ ๊ตฌ๊ธ ๋ฏธ๋์ดํ์ดํ์ ๊ฐ๋ ์ด๋ ์ฉ์ด๋ค ๋ํ ์์ฃผ ์ ์ดํดํ๊ณ ์์ด์ผ ์ ์ ํ๊ฒ ๋น๋๊ด๋ จ ํ์ผ์ ์์ฑํ์ฌ ์ํํ ๋น๋๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
(์ฐธ๊ณ ๋ก bazel์ google์์ ๋ง๋ ๋น๋ ํด๋ก gradle์ด๋ maven ๊ฐ์ ์ญํ ์ ํ์ฌ ๋ฉํฐ ํ๋ซํผ์์ ๋น๋๊ฐ ๊ฐ๋ฅํ๋๋ก ํฉ๋๋ค.)
์ ์ญ์ MediaPipe์ ์์ ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผ bazel์ ํตํ build๋ฅผ ์ ๋ง ๋ง์ด ์๋ํ๊ณ ์ฒ์์ผ๋ก objective-c ๊ด๋ จ ๊ณต๋ถ๋ ํ์์ง๋ง bazel๊ณผ ๋ฏธ๋์ดํ์ดํ ๊ฐ์ ๋ฒ์ ๋ฌธ์ ํน์ ์ด๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ๋ MediaPipe๊ฐ ์ ๊ณตํ๋ iOS docs์ legacy ๋ฌธ์ ๋ค๋ก ์ธํด ๊ต์ฅํ ์ด๋ ค์์ ๊ฒช์์ต๋๋ค.
MediaPipe ๊ณต์ ๋ ํฌ์งํฐ๋ฆฌ ์ด์์์๋ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด์์ผ๋ ์ ์ ๋น์ทํ ์ค๋ฅ๋ฅผ ๊ฒช๊ณ ์๋ ๊ฐ๋ฐ์๋ค์ด ๋ง์๊ณ ๊ตฌ๊ธ ๋ด๋ถ์ ์ผ๋ก๋ iOS ๊ด๋ จ ๋ฌธ์ ๋ค์ ์ธ์ํ๊ณ ๋ด๋ถ์์๋ ํด๊ฒฐ ์ค์ด์์ต๋๋ค.
๊ทธ๋ ๊ฒ ํฌ๊ธฐํ์ง์๊ณ ํด๊ฒฐํด๋ณด๋ ค ๊ณต์ ๋ ํฌ์งํฐ๋ฆฌ์ ๋ง์ ์ด์๋ค์ ๋ค์ง๋ ์ค
bazel build์ MediaPipe์ ๋ฅํ์ ํ๋ฅญํ ๊ฐ๋ฐ์ ๋ถ์ด ๋ฏธ๋ฆฌ ์ปดํ์ผ ์์ผ Swift ํ๋ก์ ํธ์ ๋ฏธ๋์ดํ์ดํ๋ฅผ ๋ฃ์ด๋์ ์์ ํ์ผ์ ์ฌ๋ ค ๋์ผ์ ๊ฒ์ ๋ฐ๊ฒฌํ์์ต๋๋ค๐ญ
์ด ๋ฒ์ ์ด 3๋ ์ ๋ฒ์ ์ด์ด์ ๋๋ค๋ฅธ ๊ฐ๋ฐ์๋ถ์ด ์ฝ๋๋ฅผ ์์ ํ์ฌ ์ข ๋ ์ต์ ์ ๋ฏธ๋์ดํ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฐ์ดํธ๋ฅผ ํด๋์๊ณ ์คํ ์์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
(์ ๋ง ๋ฐ๊ฒฌํ์ ๋ ๊ณ์ ๋ฐฉํฅ์ผ๋ก ์ ํ๊ณ ์ถ์์ต๋๋ค..)
ํ๋ก์ ํธ์ ์ฌ์ฉํ๊ฒ ๋ ์คํ์์ค
https://github.com/szotp-lc/HandTracker
GitHub - szotp-lc/HandTracker: Detect 3d hand landmark from video stream.
Detect 3d hand landmark from video stream. Contribute to szotp-lc/HandTracker development by creating an account on GitHub.
github.com
์ด๋ ๊ฒ ์ฐ์ฌ๊ณก์ ๋์ MediaPipe Framework๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๊ณ ํ๋ก์ ํธ๋ฅผ ์ ๋๋ก ์งํ ํ ์ ์๊ฒ ๋์์ต๋๋ค.
์ด ๋ถ๋ถ์ ๋ํ ์์ธํ ํฌ์คํ ์ 2ํธ์ผ๋ก ์ด์ด์ ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค.
'iOS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Xcode] Failed to prepare device for development ์๋ฌ (0) | 2023.03.16 |
---|---|
[iOS] iOS Concurrency - 2. ๋์คํจ์น ํ์ ์ข ๋ฅ์ ํน์ฑ (0) | 2023.03.05 |
[iOS] pod init ์ค๋ฅ ์ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2023.02.17 |
[iOS] ์ปค์คํ ํฐํธ ์ถ๊ฐ ๋ฐฉ๋ฒ (0) | 2023.02.16 |
[iOS] addsubview()์ ํ๋ฒ์ ์ฌ๋ฌ subview ์ถ๊ฐํ๊ธฐ (0) | 2023.02.14 |