๐ฐ๐ท ํ๊ตญ์ด
pose_estimation
๐บ๐ธ English | ๐ฎ๐ณ เคนเคฟเคเคฆเฅ | ๐ฏ๐ต ๆฅๆฌ่ช | ๐จ๐ณ ็ฎไฝไธญๆ | ๐ช๐ธ Espaรฑol | ๐ง๐ท Portuguรชs (Brasil) | ๐ฐ๐ท ํ๊ตญ์ด | ๐ฉ๐ช Deutsch | ๐ซ๐ท Franรงais

[!NOTE] ์ด ๋ฌธ์๋ README์ ๋ฒ์ญ๋ณธ์ ๋๋ค. ์์ด ๋ฒ์ ์ด ๊ธฐ์ค ๋ฌธ์์ ๋๋ค.
2D ์ด๋ฏธ์ง์์ ํฌ์ฆ ์ถ์ ์ ์ํํ๊ธฐ ์ํ ์ปจํ ์ด๋์ ๋๋ค.
Pose-to-VRM ๋ณธ ๋งคํ
backend๋ BODY_25 ์คํ์ผ์ pose keypoints์ bone pairs๋ฅผ ๋ฐํํฉ๋๋ค. MediaPipe mode์์๋ Neck์ด LShoulder์ RShoulder์์ ํฉ์ฑ๋๊ณ , MidHip์ LHip๊ณผ RHip์์ ํฉ์ฑ๋ฉ๋๋ค. ์ถ์ ๋ pose๋ฅผ VRM humanoid skeleton์ผ๋ก ์ ์กํ ๋ ์๋ ํ๋ฅผ ์ฌ์ฉํ์ธ์.
| ์ถ์ pose vector | ์ ๋ ฅ keypoints | VRM humanoid bone | ์ฐ์ ์์ | Notes |
|---|---|---|---|---|
| Body root | MidHip, LHip, RHip |
hips |
Required | ์ฃผ๋ก root rotation์ ์ฌ์ฉํฉ๋๋ค. ๋จ์ผ ์ด๋ฏธ์ง์์ ์ป์ root translation์ ๊ณผ์ ํ์ง ๋ง์ธ์. |
| Spine | MidHip -> Neck |
spine |
Required | ์์ฒด์ ๊ธฐ๋ณธ ๋ฐฉํฅ์ ๋๋ค. |
| Chest | MidHip -> Neck |
chest |
Recommended | ๊ณผ๋ํ ๊ตฝํ์ ํผํ๊ธฐ ์ํด spine๋ณด๋ค ์ฝํ weight๋ก ์ ์ฉํฉ๋๋ค. |
| Upper chest | MidHip -> Neck |
upperChest |
Optional | ๋ก๋๋ VRM model์ ์ด bone์ด ์์ ๋๋ง ์ฌ์ฉํฉ๋๋ค. |
| Neck | Neck -> Nose |
neck |
Recommended | ๋จ์ผ ์ด๋ฏธ์ง pose estimation์์๋ head์ neck landmarks์ ๋ ธ์ด์ฆ๊ฐ ๋ง์ผ๋ฏ๋ก ๋ถ๋๋ฝ๊ฒ ์ ์ฉํฉ๋๋ค. |
| Head | Neck -> Nose, Nose -> LEye, Nose -> REye, LEye -> LEar, REye -> REar |
head |
Recommended | simple fallback์ Neck -> Nose๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. eye์ ear points๋ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. |
| Left shoulder | Neck -> LShoulder |
leftShoulder |
Optional | VRM์ shoulder bones๊ฐ ์์ ๋๋ง ์ฌ์ฉํฉ๋๋ค. ์ด bone ์์ด๋ arm์ ๊ตฌ๋ํ ์ ์์ต๋๋ค. |
| Left upper arm | LShoulder -> LElbow |
leftUpperArm |
Required | ์ผ์ชฝ ์์์ ๊ธฐ๋ณธ ํ์ ์ ๋๋ค. |
| Left lower arm | LElbow -> LWrist |
leftLowerArm |
Required | ์ผ์ชฝ ์ ์์ ๊ธฐ๋ณธ ํ์ ์ ๋๋ค. |
| Left hand | LElbow -> LWrist or hand landmarks |
leftHand |
Optional | BODY_25๋ wrist orientation์ ์ถฉ๋ถํ ์ ๊ณตํ์ง ์์ต๋๋ค. hand landmarks๊ฐ ์์ผ๋ฉด ์ฝํ fallback์ผ๋ก ์ฌ์ฉํ์ธ์. |
| Right shoulder | Neck -> RShoulder |
rightShoulder |
Optional | VRM์ shoulder bones๊ฐ ์์ ๋๋ง ์ฌ์ฉํฉ๋๋ค. |
| Right upper arm | RShoulder -> RElbow |
rightUpperArm |
Required | ์ค๋ฅธ์ชฝ ์์์ ๊ธฐ๋ณธ ํ์ ์ ๋๋ค. |
| Right lower arm | RElbow -> RWrist |
rightLowerArm |
Required | ์ค๋ฅธ์ชฝ ์ ์์ ๊ธฐ๋ณธ ํ์ ์ ๋๋ค. |
| Right hand | RElbow -> RWrist or hand landmarks |
rightHand |
Optional | BODY_25๋ wrist orientation์ ์ถฉ๋ถํ ์ ๊ณตํ์ง ์์ต๋๋ค. hand landmarks๊ฐ ์์ผ๋ฉด ์ฝํ fallback์ผ๋ก ์ฌ์ฉํ์ธ์. |
| Left upper leg | LHip -> LKnee |
leftUpperLeg |
Required | ์ผ์ชฝ ํ๋ฒ ์ง์ ๊ธฐ๋ณธ ํ์ ์ ๋๋ค. |
| Left lower leg | LKnee -> LAnkle |
leftLowerLeg |
Required | ์ผ์ชฝ ์ ๊ฐ์ด์ ๊ธฐ๋ณธ ํ์ ์ ๋๋ค. |
| Left foot | LAnkle -> LBigToe, LAnkle -> LHeel |
leftFoot |
Recommended | toe์ heel points๊ฐ ๋ณด์ผ ๋ ์ฌ์ฉํฉ๋๋ค. |
| Left toes | LHeel -> LBigToe |
leftToes |
Optional | VRM์ toe bones๊ฐ ์๊ณ toe landmarks๊ฐ ์์ ์ ์ผ ๋๋ง ์ฌ์ฉํฉ๋๋ค. |
| Right upper leg | RHip -> RKnee |
rightUpperLeg |
Required | ์ค๋ฅธ์ชฝ ํ๋ฒ ์ง์ ๊ธฐ๋ณธ ํ์ ์ ๋๋ค. |
| Right lower leg | RKnee -> RAnkle |
rightLowerLeg |
Required | ์ค๋ฅธ์ชฝ ์ ๊ฐ์ด์ ๊ธฐ๋ณธ ํ์ ์ ๋๋ค. |
| Right foot | RAnkle -> RBigToe, RAnkle -> RHeel |
rightFoot |
Recommended | toe์ heel points๊ฐ ๋ณด์ผ ๋ ์ฌ์ฉํฉ๋๋ค. |
| Right toes | RHeel -> RBigToe |
rightToes |
Optional | VRM์ toe bones๊ฐ ์๊ณ toe landmarks๊ฐ ์์ ์ ์ผ ๋๋ง ์ฌ์ฉํฉ๋๋ค. |
| Left eye | Nose -> LEye |
leftEye |
Optional | gaze ๋๋ expression features์๋ง ํ์ํฉ๋๋ค. |
| Right eye | Nose -> REye |
rightEye |
Optional | gaze ๋๋ expression features์๋ง ํ์ํฉ๋๋ค. |
์ต์ํ์ผ๋ก ์ ์ฉํ VRM bones๋ spine, leftUpperArm, leftLowerArm, rightUpperArm, rightLowerArm, leftUpperLeg, leftLowerLeg, rightUpperLeg, rightLowerLeg์
๋๋ค. ์ด๋ค์ด ์์ ๋ ํ์๋ ๋ ์ฝ๊ธฐ ์ฌ์ด avatar pose๋ฅผ ์ํด hips, chest, neck, head, leftFoot, rightFoot๋ฅผ ์ถ๊ฐํ์ธ์.
ํ๋ก์ ํธ ์์ํ๊ธฐ
cp .env.example .env
docker compose up --build
๋ธ๋ผ์ฐ์ ๋ฅผ ์ฝ๋๋ค:
http://localhost:8081
API๋ฅผ ํ์ธํฉ๋๋ค:
curl http://localhost:8000/api/v1/health
์ฌ์ฉ ๋ฐฉ๋ฒ
- โSelect imageโ๋ฅผ ๋๋ฆ ๋๋ค.
- image๋ฅผ ์ ํํฉ๋๋ค.
- image ์์ ์ค๋ฒ๋ ์ด๋ 2D keypoints๋ฅผ ํ์ธํฉ๋๋ค.
- ์๋์ชฝ โ3D skeleton checkโ view์์ pose direction์ ํ์ธํฉ๋๋ค.
Tests
backend tests ์คํ:
docker compose -f docker-compose.test.yml run --rm backend_test
frontend smoke test ์คํ:
docker compose -f docker-compose.yml -f docker-compose.test.yml run --rm frontend_test
License
- Apache License 2.0