- Published on
๐ | 3D Pose-Based Temporal Action Segmentation for Figure Skating
Review Today
๋จ์ ์นด๋ฉ๋ผ๋ก ์ดฌ์๋ ๋น๋์ค๋ง์ผ๋ก ํผ๊ฒจ ์ค์ผ์ดํ ๋์์ ์ ํํ ํ๋ณํ๋ ๊ฒ์ ์ฌ๋ฌ ํ๊ณ๊ฐ ์กด์ฌํ๋ค. ํนํ ํผ๊ฒจ ์ค์ผ์ดํ ์ ๋ณต์กํ ํ์ ๋์๊ณผ ์ ํ์ 3์ฐจ์์ ํน์ฑ์ 2D ์์๋ง์ผ๋ก๋ ์์ ํ ๋ถ์ํ๊ธฐ ์ด๋ ต๋ค. ๊ธฐ์กด ๋ฐฉ๋ฒ๋ค์ ๊น์ด ์ ๋ณด์ ๋ถ์กฑ์ผ๋ก ์ธํด ์ ํํ ๋์ ๋ถ๋ฅ์ ํ๊ณ๋ฅผ ๋ณด์๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 3์ฐจ์ ์์ธ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ์ ๊ทผ๋ฒ์ ์ฑํํ์๋ค. 2D ์์ธ ์ถ์ ๊ฒฐ๊ณผ๋ฅผ 3D๋ก ๋ณํํ๊ณ , ์๊ณ์ด ํน์ฑ์ ๊ณ ๋ คํ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ํตํด ์ ํ ๋์์ ์ ํํ ๋ถ์ํ๊ณ ์ ํ์๋ค. ์ด๋ฅผ ํตํด ๋จ์ ์นด๋ฉ๋ผ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋ฉด์๋ ์ค์ฉ์ ์ธ ์์คํ ๊ตฌ์ถ์ ๋ชฉํ๋ก ํ์๋ค.
์ค๋์ ํ์ฌ ํ๋ก์ ํธ์ ์ฐธ๊ณ ๋ ๋ ผ๋ฌธ์ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํ๊ณ ์ฌ์ฉ๋ ์ฃผ์ ๋ชจ๋ธ์ธ MotionAGFormer์ ๋ํด์ ๋ ๋ณด์ถฉ ์ค๋ช ์ ํ๋ค.
Proposed method
๋ณธ ๋ ผ๋ฌธ์ contribution์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค. (๋ ผ๋ฌธ์์๋ 3๊ฐ๋ก ๋๋์์ง๋ง ์ฌ์ค์ ์ด ๋ ๊ฐ์ง๋ก ์์ฝํด๋ณผ ์ ์๋ค.)
- ํผ๊ฒจ์ค์ผ์ดํ ์ ํ ๋ฐ์ดํฐ์ ์์ฑ
- Pose Estimation๊ณผ Temporal Action Segmentation๋ก์ ๋ณธ ๋ฐ์ดํฐ์ ์ ์ ์๋ฏธํ๋ค.
Figure Skating Jump Dataset
์ด ํ๋ก์ ํธ์์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ์ ์ 12๊ฐ ์นด๋ฉ๋ผ๋ก ๋์ ์ดฌ์๋ ๋น๋์ค ๋ฐ์ดํฐ์ ํจ๊ป 3D ์ขํ ๋ฐ์ดํฐ(c3d), ๋ฉํ๋ฐ์ดํฐ(json)๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
โโc3d
โ โโSkater_A
โ โ โโAxel, Comb, Flip, Loop, Lutz, Salchow, Toeloop
โโjson
โ โโSkater_A (๋์ผ ๊ตฌ์กฐ, 2D ๊ธฐ๋ฐ)
โโskater_A
โ โโcam_1 ~ cam_12 (์ดฌ์ ์์)
์ ํ ์ข ๋ฅ ๋ถ๋ฅ: ์ก์ , ํ๋ฆฝ, ๋ฃน, ๋ฌ์ธ , ์ด์ฝ, ํ ๋ฃน, ๊ทธ๋ฆฌ๊ณ ์ฝค๋น๋ค์ด์ ๊น์ง ์ด 7๊ฐ์ง ์ ํ ์ ํ์ ํฌํจํ๊ณ ์๋ค. ๊ฐ ์ ํ๋ ์๋ก ๋ค๋ฅธ ๋์ฝ ๋ฐฉ์๊ณผ ํ์ ํน์ฑ์ ๊ฐ์ง๋ฏ๋ก, ์ด๋ค์ ์ ํํ ๊ตฌ๋ถํ๋ ๊ฒ์ด ์ด ํ๋ก์ ํธ์ ํต์ฌ ๊ณผ์ ์๋ค.
Figure Skating Jump TAS with 3D Poses
์ ์์ ์๊ฐ๊ณผ ๋์ํ๋ ๋ถ๋ถ์ผ๋ก, ๋จ์์นด๋ฉ๋ผ๋ก ์ดฌ์๋ ๋น๋์ค๋ก ํผ๊ฒจ์ค์ผ์ดํ ๋์์ ๊ด๋ จํ์ฌ ํ๋ณํ๋ ๊ฒ์ ํ๊ณ๊ฐ ์กด์ฌํ๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ 3์ฐจ์ ๋ฐ์ดํฐ๋ ํ๋จ์ ์์ด์ ์ ์๋ฏธํ ๊ฒฐ๊ณผ๋ฅผ ๋ผ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ๊ณ ์๋ค. Estimation์ ์ ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
DWpose โ MotionAGFormer โ Frame Action Cross Attention
Estimation ํํด์ input output์ ์๋์ ๊ฐ๋ค.
Method | Input | Ouput |
---|---|---|
DWpose | Monocular RGB Video | (nframes, 17 joints, pixel coord x, pixel coord y,confidence score) |
MotionAGFormer | (nframes, 17 joints, pixel coord x, pixel coord y,confidence score) | (nframes, 17 joints, xyz world coord) |
Frame Action Cross Attention | aligned 3d flatten pose, dummy labels | segments |
์ฌ๊ธฐ์ ๋ณ๋์ ํ๋ จ์ ๊ฑฐ์น ๋ชจ๋ธ์ MotionAGFormer์ Frame Action Cross Attention์ด๋ค.
MotionAGFormer
MotionAGFormer์ ๊ตฌ์กฐ์ ์ ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค. ์ธ์ฒด ๋์์ ๊ณต๊ฐ์ ํน์ฑ๊ณผ ์๊ฐ์ ํน์ฑ์ ๋์์ ๋ชจ๋ธ๋งํ ์ ์๋๋ก ์ค๊ณ๋์๋ค. ์ ์ฒด ๊ตฌ์กฐ๋ ํฌ๊ฒ ๋ ๊ฐ์ ๋ณ๋ ฌ ๋ธ๋์น๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ด๋ฏธ์ง๋ AGFormer์ ๊ทธ ํ๋ฆ์ ๋ณด์ฌ์ฃผ๋๋ฐ, AGFormer ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค. (b)๋ spatial ์ฆ, ๊ด์ ์ ์์น ์ ๋ณด๋ฅผ ๋ด๋นํ๋ spatial metaformer, ๊ด์ ๋ค ๊ฐ์ ๊ณต๊ฐ์ ๊ด๊ณ๋ฅผ ๋ชจ๋ธ๋งํ๋ ์ญํ ์ ๋ด๋นํ๋ค. ๊ฐ ๊ด์ ์ด ์ธ์ ํ ๊ด์ ๋ค๊ณผ ์ด๋ค ๊ด๊ณ๋ฅผ ๊ฐ์ง๋์ง ํ์ตํ์ฌ, ์์ฐ์ค๋ฌ์ด ์ธ์ฒด ๋์์ ์ ์ฝ์กฐ๊ฑด์ ๋ชจ๋ธ์ ๋ฐ์ํ ์ ์๋ค. (c)๋ trajectory ์ ๋ณด๋ฅผ ๋ด๋นํ๋ temporal metaformer๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ณผ๊ฑฐ์ ํ์ฌ, ๋ฏธ๋์ ํ๋ ์๋ค ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํ์ตํ๋ค.
์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด์ Metaformer ๊ตฌ์กฐ๋ฅผ ์ดํดํด์ผํ๋๋ฐ,
TokenMixer๋ผ๊ณ ์ ํ์์ง๋ง, ๋ณธ ๋ ผ๋ฌธ์ ์ฝ๋๋ฅผ ์คํค๋ฐํด๋ดค์ ๋ ์ ๋ถ๋ถ์ด Attention์ด ๋ค์ด๊ฐ๋ ์๋ GCN์ด ๋ค์ด๊ฐ๋์ ์ฐจ์ด๋ฐ์ ์์ด๋ณด์ธ๋ค. ์ ๋ ๊ฐ๋ฅผ ์๋ ๊ฒ๋ ์๋๊ณ ๋ ผ๋ฌธ์์๋ parallel module์ด๋ผ๊ณ ํํํ๊ณ ์๋ค.
GCN ๊ณ์ฐ ๊ณผ์ ์์ ์๋นํ ํ๋ ฌ ์ฐ์ฐ์ด ํ์ํ๋ฏ๋ก, ์ด ๋ถ๋ถ์ด ์ ์ฒด ํ๋ จ ๊ณผ์ ์์ ์ฃผ์ ๋ณ๋ชฉ ์ง์ ์ด ๋ ์ ์์์ ํ์ธํ์๋ค. ๋ฐ๋ผ์ ์ค์ ์์คํ ๊ตฌ์ถ ์์๋ ์ด ๋ถ๋ถ์ ์ต์ ํ๊ฐ ์ค์ํ ๊ณ ๋ ค์ฌํญ์ด๋ค.
Data preprocessing
Finetuningํ ๋ชจ๋ธ์ ๋ ๊ฐ์ง๋ก ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ์๋์ ๊ฐ๋ค.
MotionAGFormer
์๋ ๋ฐ์ดํฐ์ ์ ์ด๋ฏธ MotionAGFormer์ ๋ง๊ฒ ๋ฐ์ดํฐ๊ฐ ์ค๋น๋์ด์๋ค.
๋ง์ฝ Custom์ผ๋ก ์ค๋นํ๊ณ ์ถ๋ค๋ฉด ์๋ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ์ผํ๋ค.
dict_keys(['joint_2d', 'confidence', 'joint3d_image', 'joints_2.5d_image', '2.5d_factor', 'camera_name', 'action', 'source', 'frame', 'world_3d', 'cam_3d', 'cam_param'])
์ฌ๊ธฐ์ 'joint3d_image'๋ ์ด๋ฏธ์ง ์ขํ๊ณ (world โ camera โ image)๋ก ๋ณํ๋ ๊ฐ์ผ๋ก z๊ฐ์ depth ๊ฐ์ด๋ค. ์๊ทผ๊ฐ์ ์ํด ์ ์ฉ๋ ๊ฐ์ด๋ค. ๋ฐ๋ผ์: joint3d_image * 2.5d_factor = joint_2.5d_image์ ๊ฐ๋ค.
2d์ confidence๋ 2d pose estimator์ ํตํด์, 3d๋ world frame ๊ธฐ์ค 3d pose estimator๋ก ์ป๊ณ , camera์ intrinsic, extrinsic๊ฐ์ด ์๋ค๋ฉด ๋ฐ์ดํฐ์ ์ ๋ง๋ค๊ธฐ๊น์ง๋ ํฌ๊ฒ ์ด๋ ต์ง ์๋ค. ๋ฌธ์ ๋ 2.5d factor์ ์ด๋ป๊ฒ ์ป๋๋๋๊ฑด๋ฐ,

lambda = (box[2] - box[0] + 1) / rectangle_3d_size
์ฌ๊ธฐ์ lambda๋ world ์ขํ๊ณ์์ image ์ขํ๊ณ๋ก์ ๋ณํ ๋น์จ์ ๋ํ๋ธ๋ค. ๋ฐ๋๋ก 2.5d factor๋ image ์ขํ๊ณ์์ world ์ขํ๊ณ๋ก์ ์ญ๋ณํ์ ์ํ ํฉํฐ์ด๋ฏ๋ก, ๋ค์๊ณผ ๊ฐ์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ๋ค:
2.5d_factor = 1/lambda
joint3d_image๋ 3D ์๋ ์ขํ๋ฅผ ์นด๋ฉ๋ผ ์ขํ๊ณ๋ฅผ ๊ฑฐ์ณ ์ด๋ฏธ์ง ์ขํ๊ณ๋ก ๋ณํํ ๊ฒฐ๊ณผ์ด๋ค. ์ด๋ z๊ฐ์ ์ค์ ๊น์ด ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, ์๊ทผ๊ฐ์ ์ ํํ ๋ฐ์ํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ณ์ฐ์ด ์ํ๋๋ค:
joint3d_image * 2.5d_factor = joint_2.5d_image
Frame Action Cross Attention

๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ์์๋ 17๊ฐ ๊ด์ ์ ์ ๋ ฌ๋ local pose ์ ๋ณด์ ํจ๊ป ๊ด๋ จ ์ค์ผ๋ฌ ๊ฐ๋๋ฅผ ์ถ๊ฐํ ํํ๋ฅผ ํน์ฑ์ผ๋ก ํ์ฉํ๋ค. ์ด๋ฅผ ํตํด ๊ด์ ์ ์์น๋ฟ๋ง ์๋๋ผ ๋ฐฉํฅ ์ ๋ณด๋ ํจ๊ป ๊ณ ๋ คํ ์ ์์ด, ๋ณด๋ค ์ ํํ ๋์ ๋ถ์์ด ๊ฐ๋ฅํ๋ค.
๋ฐ์ดํฐ์ ์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ ์๋์ ๊ฐ์๋๋ฐ,

์ด์ 3d๋ก ์ถ์ถํ ๋ฐ์ดํฐ๊ฐ ๊ทธ๋ฅ ์ฉ ์ข์ง ์์์ ๋ณด์ฌ์ค๋ค.. ์ด ์ํ๋ก TAS๋ฅผ ์งํํ ๊ฒ ๊ฐ๋ค.
Results
MotionAGFormer์ Frame Action Cross Attention์ ๊ฐ ์์๋๋ก์ evaluation์ ์๋์ ๊ฐ๋ค.
MotionAGFormer Error |
---|
Protocol #1 Error (MPJPE): 68.64220575394518 mm |
Acceleration error: 0.8875901212590517 mm/s^2 |
Protocol #2 Error (P-MPJPE): 10.61481703004164 mm |
Metric | Value |
---|---|
Edit | 88.12912075922682 |
AccB | 97.32553214576997 |
Acc | 97.32553214576997 |
F1@0.10 | 88.6706877013139 |
F1@0.25 | 88.46973316829319 |
F1@0.50 | 87.56543776970041 |
์๊ฐ๋ณด๋ค ์ธ์์ ์์ด์ ์ค๋ง์ค๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ์๋ค. Annotation feature ๋ฐ์ดํฐ๊ฐ ๋ง์ด ์์๋ ๊ฒ์ ํ์ธํด์.. ๊ทธ๊ฒ์ ๊ฐ์ํ๊ณ ์ธ์ํ๋ ๊ฒ ๊ฐ์๋ณด์ธ๋ค. ์์์ ๋ฟ์ธ ์ด๋ ๋ฃน์ผ๋ก ์ธ์ํ๋ ์ค๋ฅ๋ฅผ ๋ฒํ๊ณ ์๋ค..
Wrapup & Conclusion
์ด์ ํฌ์คํธ์์๋ ์ธ๊ธ์ด ๋์๋ฏ, ์ผ๋ณธ์์๋ ์ด์ ๊ด๋ จํด์ ์ฐ๊ตฌ๊ฐ ์๋นํ ์ด๋ฃจ์ด์ง๊ณ ์๋ ๊ฒ ๊ฐ์๋ฐ, ๊ธฐ์กด์ ์ฒด์กฐ ์ชฝ์์ ์ฐ์ด๋ AI ์ฑ์ ๊ธฐ์ ์ ๋ฐํ์ผ๋ก ์ ์๋ค ํ๋ จ ๋ถ์์ฉ ๋ชจ๋ธ์ ๋ง๋ค๊ณ ์๋ ์ค์ด๋ค.
๊ฒฐ๊ณผ๋ ๋น๋ก ์คํจ์ ๊ฐ๊น์ด ๋ ผ๋ฌธ ๊ตฌํ์ด์์ง๋ง ์ถฉ๋ถํ ๊ฐ์ ๊ฐ๋ฅํ๋ค๊ณ ๋ณธ๋ค.
- foot feature ์ถ๊ฐ: ๋์ฝ๊ณผ ์ฐฉ์ง๊ฐ ์ค์ํ ํ์ ๊ธฐ์ค์ผ๋ก์จ Annotation์ ์ถ๊ฐ์ ์ธ ๋ถ๋ถ๋ค์ด ํ์ํ๋ค. ์ด ๋ถ๋ถ์ ์ด์ ํ๋ ์๊ณผ ํ์ฌ ํ๋ ์๊ฐ์ ์๋๋ก ๊ณ์ฐํด์ ๋ค์ด๊ฐ๋ฉด ๋ฐ ์์ฒด๋ฅผ ์ถ๊ฐํ์ง ์์๋ ๋ ๊ฒ ๊ฐ์ ๋ณด์ธ๋ค.
- ์ถ๊ฐ์ ์ธ Annotation ๋ฐ์ดํฐ ํ์: ์์ง ์ฐฉ์ง์ ๋์ฝ์ ๊ดํ ๋ฐ์ดํฐ์ ์ ํ์ ํ ๋ถ์กฑํ๊ณ ์ฃผ๊ด์ ์ธ ์์๋ค์ด ๋ค์ด๊ฐ๋ค. ์ด์ ๊ด๋ จํด์ ๋ง์ ์ฌ๋๋ค๋ก๋ถํฐ ๋ฐ์ดํฐ ์์ง์ด ํ์ํด๋ณด์ธ๋ค.
๋ํ ๋ ผ๋ฌธ์์๋ DWposeEstimator๋ฅผ ์ฌ์ฉํ์์ง๋ง.. coco ํฌ๋งท์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๋์์ ๋ณํํด์ h36m ํฌ๋งท์ estimate์ ํ์๋ค. ์ด๋ฏธ ๋ด๋ถ์ hrnet์ด๋ผ๊ณ 2d pose estimator๊ฐ ์์๋๋ฐ, ์๋๋ฉด์์ hrnet์ด estimateํ๋๋ฐ ๋ ๋นจ๋์ด์ dwpose๋ fallback์ฉ์ผ๋ก ๋ฃ์ด๋๊ธฐ๋ ํด๋์๋ค. ์, ๊ทธ๋ฆฌ๊ณ .. coco ํฌ๋งท์ด ๋ ๊ฐ์ง(?)๋ ์๋ค๋ ๊ฑธ ์ด๋ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฏ์ด๋ณด๋ฉด์ ์๊ฒ๋์๋ค. ๋๋ฆ ์ป์ด๊ฐ๋ ๋ถ๋ถ์ด ๋ง์๋ ํ๋ก์ ํธ์ธ ๊ฒ ๊ฐ๋ค.
Reference
- Authors
- Name
- Amelia Young
- GitHub
- @ameliacode