Published on

๐Ÿ›  | 3D Pose-based Temporal Action Segmentation for Figure Skating

Development Background

2022๋…„ ๋ฒ ์ด์ง• ์˜ฌ๋ฆผํ”ฝ์„ ๊ธฐ๋…ํ•ด์„œ ๋งŒ๋“ค์—ˆ๋˜ skating ai๊ฐ€ ๋‹ค๊ฐ€์˜ค๋Š” 2026๋…„ ๋ฐ€๋ผ๋…ธ ์˜ฌ๋ฆผํ”ฝ์„ ๊ธฐ๋…ํ•ด์„œ ์žฌ๋ฐŒ๊ฒŒ ๋งŒ๋“ค๊ณ ์ž ๋‹ค์‹œ ๊บผ๋‚ด๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์‚ฌ์‹ค ๋‚˜๋Š” 2014๋…„์— ๊ต‰์žฅํžˆ ๋ถˆํ•ฉ๋ฆฌํ•œ ํŒ์ •์„ ๋ณด๊ณ  ๋‚ด ๋งˆ์Œ ์–ด๋”˜๊ฐ€์— judge ai ๊ด€๋ จํ•ด์„œ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ์†Œ๋ง์€ 10๋…„ ์ด์ƒ ๋‚ด๋‚ด ์žˆ์–ด์™”๋‹ค..ใ…‹ใ…‹ใ… ใ… 

์•„์‹œ๋‹ค์‹ถ์ด ๋‹น์‹œ 2022๋…„์—๋Š” transformer๊ธฐ๋ฐ˜ํ•ด์„œ ์—ฌ๋Ÿฌ pose estimation์ด ๋งŽ์ด ๋‚˜์˜ค๋˜ ์‹œ๊ธฐ์˜€์ง€๋งŒ, ๋‚ด ๊ธฐ์–ต์ƒ.. ์ผ์ƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฒ—์–ด๋‚œ ํ–‰๋™์„ ํ•˜๋ฉด ์ž˜ ์ธ์‹ํ•˜์ง€ ๋ชปํ•œ ํ•œ๊ณ„๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ์—ˆ๋‹ค. ์ ํ”„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์†๋„๋กœ ์ธํ•ด์„œ ๋ธ”๋Ÿฌ๋ฆฌํ•˜๊ฒŒ ๋ณด์ด๋Š” ์˜์ƒ์ด ๋งŽ๊ณ  ์• ์ดˆ์— ๋ฐ์ดํ„ฐ์…‹ ์ž์ฒด๊ฐ€ ์Šคํฌ์ธ  ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋กœ ํ›ˆ๋ จํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ถ€์ง€๊ธฐ์ˆ˜๋ผ..

๋…ผ๋ฌธ์„ ์ž์„ธํ•˜๊ฒŒ ์ฝ์ง€๋Š” ์•Š์•˜์ง€๋งŒ pose estimation ๊ด€๋ จํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ ์ •๋„ ๊ฐ๋งŒ ์žก๊ณ  ์žˆ์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์šฐ์—ฐํžˆ ์ด ๋…ผ๋ฌธ์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜๋Š”๋ฐ.. ๋ณด์•„ํ•˜๋‹ˆ ํ•ด๋‹น ๋ชจ๋ธ ํ† ๋Œ€๋กœ ์‹ค์ œ๋กœ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋กœ์ปฌ๋กœ ๋งŒ๋“œ์‹ ๊ฑด์ง€..

์•”ํŠผ ์ตœ๋Œ€ํ•œ ํ•ด๋‹น ๋…ผ๋ฌธ์„ ๋ณด๊ณ  ๋”ฐ๋ผํ•˜๋ฉด์„œ ์ถ”๊ฐ€์ ์ธ ๋ช‡๊ฐ€์ง€๋กœ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

  • ์Šค์ผ€์ดํŠธ ๊ถค์  ๊ทธ๋ฆด ๊ฒƒ
  • ์–ดํ…์…˜ ๋ฐ ํŒ์ • ์š”์†Œ: ๋„์•ฝ๊ณผ ์ฐฉ์ง€์—์„œ๋งŒ ๊ฐ๋„ ๊ณ„์‚ฐ
  • ์•ž ๋’ค ํ•จ๊ป˜ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก(?)
  • ์˜์ƒ์€ ๋‹จ์•ˆ ์นด๋ฉ”๋ผ๋กœ ์ดฌ์˜๋œ ์˜์ƒ๋งŒ -> ์ ํ”„ ๊ตฌ๊ฐ„ ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆฝํ•‘ํ•  ์ˆ˜ ์žˆ๋„๋ก

Paper Implementation and Theoretical Background

Paper Overview

๋ณธ ๋…ผ๋ฌธ์˜ ์ „์ฒด์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค:

DWpose โ†’ MotionAGFormer โ†’ Frame Action Cross Attention

๋‹จ์•ˆ ์นด๋ฉ”๋ผ๋กœ ์ดฌ์˜๋œ ๋น„๋””์˜ค๋งŒ์œผ๋กœ ํ”ผ๊ฒจ ์Šค์ผ€์ดํŒ… ๋™์ž‘์„ ์ •ํ™•ํžˆ ํŒ๋ณ„ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํŠนํžˆ ํ”ผ๊ฒจ ์Šค์ผ€์ดํŒ…์˜ ๋ณต์žกํ•œ ํšŒ์ „ ๋™์ž‘๊ณผ ์ ํ”„์˜ 3์ฐจ์›์  ํŠน์„ฑ์„ 2D ์˜์ƒ๋งŒ์œผ๋กœ๋Š” ์™„์ „ํžˆ ๋ถ„์„ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ๊ธฐ์กด ๋ฐฉ๋ฒ•๋“ค์€ ๊นŠ์ด ์ •๋ณด์˜ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ์ •ํ™•ํ•œ ๋™์ž‘ ๋ถ„๋ฅ˜์— ํ•œ๊ณ„๋ฅผ ๋ณด์˜€๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 3์ฐจ์› ์ž์„ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์ ‘๊ทผ๋ฒ•์„ ์ฑ„ํƒํ•˜์˜€๋‹ค. 2D ์ž์„ธ ์ถ”์ • ๊ฒฐ๊ณผ๋ฅผ 3D๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์‹œ๊ณ„์—ด ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ†ตํ•ด ์ ํ”„ ๋™์ž‘์„ ์ •ํ™•ํžˆ ๋ถ„์„ํ•˜๊ณ ์ž ํ•˜์˜€๋‹ค.

overview

๋…ผ๋ฌธ์˜ contribution์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค:

  1. ํ”ผ๊ฒจ์Šค์ผ€์ดํŒ… ์ ํ”„ ๋ฐ์ดํ„ฐ์…‹ ์ƒ์„ฑ
  2. 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๊ฐ€์ง€ ์ ํ”„ ์œ ํ˜•์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ๊ฐ ์ ํ”„๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋„์•ฝ ๋ฐฉ์‹๊ณผ ํšŒ์ „ ํŠน์„ฑ์„ ๊ฐ€์ง€๋ฏ€๋กœ, ์ด๋“ค์„ ์ •ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์ด ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ ๊ณผ์ œ์˜€๋‹ค.

MotionAGFormer Architecture

MotionAGFormer์˜ ๊ตฌ์กฐ์˜ ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ธ์ฒด ๋™์ž‘์˜ ๊ณต๊ฐ„์  ํŠน์„ฑ๊ณผ ์‹œ๊ฐ„์  ํŠน์„ฑ์„ ๋™์‹œ์— ๋ชจ๋ธ๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. ์ „์ฒด ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐœ์˜ ๋ณ‘๋ ฌ ๋ธŒ๋žœ์น˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

MotionAGFormer

์ด๋ฏธ์ง€๋Š” AGFormer์™€ ๊ทธ ํ๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ, AGFormer ์† ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • Spatial Metaformer: ๊ด€์ ˆ์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ๋‹ด๋‹นํ•˜๋Š” spatial metaformer, ๊ด€์ ˆ๋“ค ๊ฐ„์˜ ๊ณต๊ฐ„์  ๊ด€๊ณ„๋ฅผ ๋ชจ๋ธ๋งํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค. ๊ฐ ๊ด€์ ˆ์ด ์ธ์ ‘ํ•œ ๊ด€์ ˆ๋“ค๊ณผ ์–ด๋–ค ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š”์ง€ ํ•™์Šตํ•˜์—ฌ, ์ž์—ฐ์Šค๋Ÿฌ์šด ์ธ์ฒด ๋™์ž‘์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ๋ชจ๋ธ์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Temporal Metaformer: trajectory ์ •๋ณด๋ฅผ ๋‹ด๋‹นํ•˜๋Š” temporal metaformer๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ณผ๊ฑฐ์™€ ํ˜„์žฌ, ๋ฏธ๋ž˜์˜ ํ”„๋ ˆ์ž„๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ํ•™์Šตํ•œ๋‹ค.

์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ Metaformer ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•ด์•ผํ•˜๋Š”๋ฐ,

TokenMixer๋ผ๊ณ  ์ ํ˜€์žˆ์ง€๋งŒ, ๋ณธ ๋…ผ๋ฌธ์˜ ์ฝ”๋“œ๋ฅผ ์Šคํ‚ค๋ฐํ•ด๋ดค์„ ๋•Œ ์ € ๋ถ€๋ถ„์ด Attention์ด ๋“ค์–ด๊ฐ€๋ƒ ์•„๋‹˜ GCN์ด ๋“ค์–ด๊ฐ€๋ƒ์˜ ์ฐจ์ด๋ฐ–์— ์—†์–ด๋ณด์ธ๋‹ค. ์ € ๋‘ ๊ฐœ๋ฅผ ์„ž๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ  ๋…ผ๋ฌธ์—์„œ๋„ parallel module์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.

GCN ๊ณ„์‚ฐ ๊ณผ์ •์—์„œ ์ƒ๋‹นํ•œ ํ–‰๋ ฌ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ, ์ด ๋ถ€๋ถ„์ด ์ „์ฒด ํ›ˆ๋ จ ๊ณผ์ •์—์„œ ์ฃผ์š” ๋ณ‘๋ชฉ ์ง€์ ์ด ๋  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•˜์˜€๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ์‹œ์—๋Š” ์ด ๋ถ€๋ถ„์˜ ์ตœ์ ํ™”๊ฐ€ ์ค‘์š”ํ•œ ๊ณ ๋ ค์‚ฌํ•ญ์ด๋‹ค.

Data Preprocessing Process

Data Preprocessing Challenges

์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ์…‹ ํ† ๋Œ€๋กœ ์ „์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ์ด์Šˆ์— ์ž˜ ๋‚จ๊ฒจ์ ธ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ, world -> camera -> image ์ขŒํ‘œ๊ณ„๋กœ ๋ณ€ํ™˜์„ ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๊ฑฐ๋„ ๋ชจ๋ฅด๊ณ  ์‚ฝ์งˆ์„ ํ–ˆ์—ˆ๋‹ค.. ๊ทธ๋ฆฌ๊ณ  ๋”๊ตฐ๋‹ค๋‚˜ ๋…ผ๋ฌธ์— ๋‚˜์˜จ FSJump3D ๋ฐ์ดํ„ฐ์…‹์—์„œ๋Š” 2D ๊ด€๋ จ ์ •๋ณด๊ฐ€ ์—†๊ณ , ์ขŒํ‘œ๊ณ„ ๋ณ€ํ™˜์—์„œ๋Š” ์นด๋ฉ”๋ผ ์ •๋ณด๊ฐ€ ํ•„์ˆ˜๋ผ.. ๊ฒฐ๊ตญ์—๋Š” ์ด ๋ถ€๋ถ„์€ ์ €์ž์—๊ฒŒ ๋ฌธ์˜ํ–ˆ๋‹ค.

์‚ฝ์งˆํ•˜๋ฉด์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์ž˜ ๋˜์ง€ ์•Š์•˜์—ˆ๋‹ค..ใ… ใ… 

image frame..?

2d pose๋Š” dwpose๋กœ ์–ป์€ ๋ฐ์ดํ„ฐ, world3d ์ขŒํ‘œ๋Š” ์žˆ๊ฒ ๋‹ค ์‹ถ์–ด์„œ focal length๋Š” linear regression์œผ๋กœ 650 ์ถ”์ •ํ•œ ๊ฐ’์„ ์ด์šฉํ–ˆ๊ณ (ํ˜„์‹ค์€ 1650..^^) extrinsic๊ฐ’์€ cv2.solvePnP์ด์šฉํ•ด์„œ ์ถ”์ •ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ์ง€ ์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€..๋‚˜์™”๋‹ค..ใ…‹ใ…‹ใ…‹ ๊ทธ๋ž˜๋„ ์ผ๋ จ์˜ ์‚ฝ์งˆ ๋•๋ถ„์— ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ํŒŒ์•…์€ ๋˜์–ด์„œ.. ๋‹คํ–‰?์ธ ๊ฑฐ ๊ฐ™๊ธฐ๋„

Data Format Types

MotionAGFormer์—์„œ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ format ํ˜•ํƒœ๋Š” Human 3.6M๊ณผ mpiํ˜•ํƒœ๋ฅผ ์ง€์›ํ•œ๋‹ค. ๋ฌผ๋ก  ์œ„ ์ด์Šˆ๋ฅผ ํ†ตํ•ด์„œ ์ปค์Šคํ…€์œผ๋กœ๋„ ํ›ˆ๋ จ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ปค์Šคํ…€์œผ๋กœ ํ›ˆ๋ จ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์œผ๋‚˜.. ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„๋ฒ„๋ฆฐ ๋ฐ”๋žŒ์— ๋ฐ˜์ฏค ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง€๊ธด ํ–ˆ๋‹ค..ใ…‹ใ…‹

MotionAGFormer๋Š” ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๋กœ train, test๋กœ ๋‚˜๋ˆ„์—ˆ๋Š”๋ฐ,

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'])

์—ฌ๊ธฐ์„œ joint_2.5d_image = 2.5_factor * joint3d_image์™€ ๋™์ผํ•˜๋‹ค. ์ด์™€ ๊ด€๋ จ๋œ ์ด์Šˆ๋Š” ๋‹ค์‹œ ํ•œ ๋ฒˆ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์‹œ๋ฉด ๋˜๊ฒ ๋‹ค.

3D Pose Estimation Implementation

finetuning์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์‚ฝ์งˆ์„ ํ•˜๋˜ ์ค‘, ์•„๋ž˜ ๋ฐ์ดํ„ฐ์…‹์„ ์ด์šฉํ•ด์„œ ์ „์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

๋ฌธ์ œ๋Š” gt2d ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด์„œ ํ˜ผ์ž์„œ hrnet pose detector๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ์  ์ฐ๊ณ  ํ›ˆ๋ จํ•˜๋˜ ์™€์ค‘, ์•ˆ๋˜๊ฒ ๋‹ค ์‹ถ์–ด์„œ ์ €์ž์—๊ฒŒ ์งˆ๋ฌธ์„ ํ–ˆ๋‹ค. ์•Œ๊ณ ๋ณด๋‹ˆ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์…‹์€ ์•„๋ž˜ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ํ†ตํ•ฉ์ด ๋˜์—ˆ๊ณ . MotionAGFormer์™€ ์ตœ๊ทผ TCPFormer ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ์— ๋งž๊ฒŒ๋” ์ฝ”๋“œ๊ฐ€ ๋˜์–ด์žˆ์—ˆ๋‹ค.

์ด์ „ ์ด์Šˆ์—์„œ ์ดํ•ดํ–ˆ๋“ฏ, (lcn-pose)[https://github.com/CHUNYUWANG/lcn-pose/blob/master/tools/gendb.py] ๋ฅผ ๋”ฐ๋ผ์„œ ์ž˜ ์ •๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ๋‹ค. ๋ณ„๋„๋กœ ์ฝ”๋“œ ์ˆ˜์ •์—†์ด ์ „์ฒ˜๋ฆฌ ํ›„์— MotionAGFormer์„ ํŒŒ์ธํŠœ๋‹ํ•œ ๊ฒฐ๊ณผ:

Protocol #1 Error (MPJPE): 68.64220575394518 mm
Acceleration error: 0.8875901212590517 mm/s^2
Protocol #2 Error (P-MPJPE): 10.61481703004164 mm

๋…ผ๋ฌธ์—์„œ ์œ ์‚ฌํ•˜๊ฒŒ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค. โ€ป ๋…ผ๋ฌธ์€ ์•ฝ 65

์•„ ์ฐธ๊ณ ๋กœ, ํ˜„์žฌ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋Š” RTX 5060 ๋‹จ์ผ ๊ทธ๋ž˜ํ”ฝ์นด๋“œ๋กœ๋งŒ ํ›ˆ๋ จ์„ ํ–ˆ์œผ๋‚˜ batch ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ํ”„๋ ˆ์ž„ ํฌ๊ธฐ๊ฐ€ 81๋กœ ๋„˜์–ด๊ฐ€๋ฉด ํ›ˆ๋ จ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ.. ใ… ใ…  ๊ฐ€์žฅ ์ž‘์€ ๋ชจ๋ธ๋กœ ํ›ˆ๋ จํ•˜์˜€๋‹ค.

๊ถ๊ธˆํ•ด์„œ scratch๋กœ ์˜ค๋กœ์ง€ AthletePose3D๋กœ๋งŒ ํ–ˆ์„ ๋•Œ ๊ฒฐ๊ณผ๋„ ๊ถ๊ธˆํ•ด์„œ ๋‘˜ ๋‹ค ํ›ˆ๋ จํ•ด๋ณด์•˜๋‹ค. TCPFormer์€ ํ”„๋ ˆ์ž„ ์ˆ˜๊ฐ€ 81๋ถ€ํ„ฐ๋งŒ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ด์„œ ํŒŒ์ธํŠœ๋‹์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋ฉฐ, ํ›ˆ๋ จ์‹œ๊ฐ„์ด MotionAGFormer๋ณด๋‹ค ํ•œ epoch ๋‹น 2~3๋ฐฐ์˜ ์‹œ๊ฐ„์ด ์ฐจ์ด๋‚˜์„œ.. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ AthletePose3D๋กœ๋งŒ ํ›ˆ๋ จํ•ด๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

MotionAGFormer ErrorTCPFormer Error
Protocol #1 Error (MPJPE): 68.64220575394518 mmProtocol #1 Error (MPJPE): 68.11883602779461 mm
Acceleration error: 0.8875901212590517 mm/s^2Acceleration error: 0.9531336133192262 mm/s^2
Protocol #2 Error (P-MPJPE): 10.61481703004164 mmProtocol #2 Error (P-MPJPE): 10.737423883378284 mm

๊ฒฐ๊ณผ๋กœ๋งŒ ๋ดค์„ ๋•Œ ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†์–ด๋ณด์ด๊ณ .. ๋ชจ๋ธ ์ž์ฒด ์šฉ๋Ÿ‰์œผ๋กœ ๋ดค์„ ๋•Œ ์ „์ž๊ฐ€ 1/3๋ฐฐ ์ด๋ฏ€๋กœ MotionAGFormer์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋”๊ตฐ๋‹ค๋‚˜ RTX 5060 ๊ธฐ์ค€, ์ „์ž๋Š” ์•ฝ 18์‹œ๊ฐ„, ํ›„์ž๋Š” 48์‹œ๊ฐ„ ํ›ˆ๋ จ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์—ˆ๋‹ค.

๋…ผ๋ฌธ์— ๋”ฐ๋ฅด๋ฉด ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋กœ AthletePose3D๋Š” ๋‹ค์–‘ํ•˜๊ณ  robustํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋ผ๊ณ  ์ฃผ์žฅํ•œ๋‹ค.

MotionAGFormer Data Preprocessing

์•„๋ž˜ ๋ฐ์ดํ„ฐ์…‹์€ ์ด๋ฏธ 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์„ ์–ด๋–ป๊ฒŒ ์–ป๋А๋ƒ๋Š”๊ฑด๋ฐ,

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

Temporal Action Segmentation

๊ด€๋ จ ๋ฐ์ดํ„ฐ๋Š” ํ•ด๋‹น ์ด์Šˆ์—์„œ ์–ป์—ˆ๋‹ค.

๊ธฐ์กด RTX 5060์—์„œ๋Š” ํ›ˆ๋ จ์‹œ๊ฐ„์ด 240์‹œ๊ฐ„์„ ๋„˜์–ด๊ฐ€๋Š” ๊ด€๊ณ„๋กœ vast.ai ์—์„œ RTX 5090์„ ๋Œ€์—ฌํ•ด์„œ ํ›ˆ๋ จ ์‹œ๊ฐ„ 11์‹œ๊ฐ„์„ ์†Œ์š”ํ•˜์—ฌ ํ›ˆ๋ จํ•˜์˜€๋‹ค. evaluation์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์™”๋‹ค..!

MetricValue
Edit88.12912075922682
AccB97.32553214576997
Acc97.32553214576997
F1@0.1088.6706877013139
F1@0.2588.46973316829319
F1@0.5087.56543776970041

Frame Action Cross Attention Data Preprocessing

pose alignment

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ์—์„œ๋Š” 17๊ฐœ ๊ด€์ ˆ์˜ ์ •๋ ฌ๋œ local pose ์ •๋ณด์™€ ํ•จ๊ป˜ ๊ด€๋ จ ์˜ค์ผ๋Ÿฌ ๊ฐ๋„๋ฅผ ์ถ”๊ฐ€ํ•œ ํ˜•ํƒœ๋ฅผ ํŠน์„ฑ์œผ๋กœ ํ™œ์šฉํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ด€์ ˆ์˜ ์œ„์น˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐฉํ–ฅ ์ •๋ณด๋„ ํ•จ๊ป˜ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์–ด, ๋ณด๋‹ค ์ •ํ™•ํ•œ ๋™์ž‘ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐ์ดํ„ฐ ํ˜•ํƒœ๊ฐ€ ๋ฌ˜ํ•˜๊ฒŒ 18 _ 3 = 54๋กœ flatten๋œ ํ˜•ํƒœ๋ฅผ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ฌธ์ œ๋Š”.. ๊ด€์ ˆ์„ 17๊ฐœ ์‚ฌ์šฉํ•˜๋Š” h36m ํฌ๋งท์œผ๋กœ์จ ์–ด๋–ป๊ฒŒ ์ „์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ–ˆ๋‹ค. ์ด๋ฆฌ์ €๋ฆฌ ์‹คํ—˜ํ•ด๋ณธ ๊ฒฐ๊ณผ ์•ž 17 _ 3 = 51๊ฐœ๋Š” local joint position์ธ ๊ฒƒ์„ ํ™•์ธํ–ˆ์œผ๋‚˜ ๋งˆ์ง€๋ง‰ 3๊ฐœ ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ๊ฐ์ด ์•ˆ์žกํ˜”์—ˆ๋‹ค.

plot

์ฒ˜์Œ์—๋Š” global ๊ฐ’์ธ ์ค„ ์•Œ๊ณ  ์ €๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฟŒ๋ฆฐ ๊ฒƒ์ด์—ˆ์ง€๋งŒ ์•Œ๊ณ  ๋ณด๋‹ˆ ๋…ผ๋ฌธ์— ์ ํ˜€์žˆ๋Š” ๋ฐ”์™€ ๊ฐ™์ด pose alignment ์ฆ‰, ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๋ผ๋ณด๊ฒŒ๋” ์ „์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋†“๊ณ  ๊ทธ ๋’ค์—๋‹ค๊ฐ€ euler angle์„ concatํ•œ ๊ฒƒ ๋ฟ์ด์—ˆ๋‹ค. ์•„๋ž˜ ๊ธฐ์ค€์ ์„ ์žก๊ณ  ์ „์ฒ˜๋ฆฌ๋ฅผ ํ•˜์˜€๋‹ค๊ณ  ํ•œ๋‹ค.(๋…ผ๋ฌธ์—์„œ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ pose alignment๋กœ๋งŒ ํ‘œ๊ธฐ๋˜์–ด ์žˆ์–ด์„œ ๊ด€๋ จํ•ด์„œ ๊ณ„์† ์ €์ž์—๊ฒŒ ์งˆ๋ฌธํ–ˆ์—ˆ๋‹ค.)

๋‹คํ–‰ํžˆ ์ „์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์–ป์–ด์„œ pose estimation์œผ๋กœ ์–ป์€ ๊ฒฐ๊ณผ๋ฅผ ๊ฑด๋‚ด๋ฐ›์€ ํ•จ์ˆ˜ ๊ฒฐ๊ณผ๊ฐ’ ํ† ๋Œ€๋กœ segment๋ฅผ ์ง„ํ–‰ํ–ˆ์—ˆ๋‹ค.

๋ฐ์ดํ„ฐ์…‹์„ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ ์•„๋ž˜์™€ ๊ฐ™์•˜๋Š”๋ฐ,

corrupted

์ด์ „ 3d๋กœ ์ถ”์ถœํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋‹ฅ ์ฉ ์ข‹์ง€ ์•Š์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.. ์ด ์ƒํƒœ๋กœ TAS๋ฅผ ์ง„ํ–‰ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ์–ป์€ ๊ฒฐ๊ณผ๋ฌผ์€ ์Œ.. ์†”์งํžˆ ๋งŽ์ด ์‹ค๋ง์Šค๋Ÿฌ์› ๋‹ค. ๋Ÿฟ์ธ ๋ฅผ ๋ฃน์œผ๋กœ ์ธ์‹ํ•˜๋Š” ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฐ๊ณผ๊ฐ€ None์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค..ใ… ใ… 

์•„๋ฌด๋ž˜๋„ TAS์— ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ plotํ–ˆ์„ ๋•Œ ์ƒ๋‹นํžˆ corrupt๋œ ๊ฒƒ๋“ค์ด ๋งŽ์ด๋“ค์–ด๊ฐ„ ๊ฑธ ํ™•์ธํ–ˆ๊ณ , ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ€ ์ž˜ ๋‚˜์˜ค์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์‚ฌ๋ฃŒ๋œ๋‹ค..

Final Results and Evaluation

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
MetricValue
Edit88.12912075922682
AccB97.32553214576997
Acc97.32553214576997
F1@0.1088.6706877013139
F1@0.2588.46973316829319
F1@0.5087.56543776970041

์ƒ๊ฐ๋ณด๋‹ค ์ธ์‹์— ์žˆ์–ด์„œ ์‹ค๋ง์Šค๋Ÿฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค. Annotation feature ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์ด ์†์ƒ๋œ ๊ฒƒ์„ ํ™•์ธํ•ด์„œ.. ๊ทธ๊ฒƒ์„ ๊ฐ์•ˆํ•˜๊ณ  ์ธ์‹ํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„๋ณด์ธ๋‹ค. ์˜์ƒ์€ ๋Ÿฟ์ธ ์ด๋‚˜ ๋ฃน์œผ๋กœ ์ธ์‹ํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•˜๊ณ  ์žˆ๋‹ค..

Summary and Conclusions

์ข…ํ•ฉ์ ์ธ ๊ฒฐ๊ณผ์™€ ํŽ˜์ดํผ ๊ด€๋ จํ•œ ์ •๋ฆฌ๋ฅผ ํ•˜์ž๋ฉด, ์ƒ๊ฐ๋ณด๋‹ค ๊ฒฐ๊ณผ๊ฐ€ ๋ฏธํกํ•œ ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์ƒ๋‹นํžˆ ๋‚ฎ์•˜๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ€์žฅ ์ค‘์š”ํ•œ foot feature๋“ค์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.. ์ด๋Ÿฌํ•œ ์—ฐ์œ ๊ฐ€ ํฌ์ง€ ์•Š์„๊นŒ ์˜ˆ์ƒํ•ด๋ณด์•˜๋‹ค.

์ผ๋ณธ์—์„œ๋Š” ์ด์™€ ๊ด€๋ จํ•ด์„œ ์—ฐ๊ตฌ๊ฐ€ ์ƒ๋‹นํžˆ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ธฐ์กด์— ์ฒด์กฐ ์ชฝ์—์„œ ์“ฐ์ด๋˜ AI ์ฑ„์  ๊ธฐ์ˆ ์„ ๋ฐ”ํƒ•์œผ๋กœ ์„ ์ˆ˜๋“ค ํ›ˆ๋ จ ๋ถ„์„์šฉ ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์ค‘์ด๋‹ค.

๊ฒฐ๊ณผ๋Š” ๋น„๋ก ์‹คํŒจ์— ๊ฐ€๊นŒ์šด ๋…ผ๋ฌธ ๊ตฌํ˜„์ด์—ˆ์ง€๋งŒ ์ถฉ๋ถ„ํžˆ ๊ฐœ์„ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ณธ๋‹ค.

  • foot feature ์ถ”๊ฐ€: ๋„์•ฝ๊ณผ ์ฐฉ์ง€๊ฐ€ ์ค‘์š”ํ•œ ํŒ์ • ๊ธฐ์ค€์œผ๋กœ์จ Annotation์— ์ถ”๊ฐ€์ ์ธ ๋ถ€๋ถ„๋“ค์ด ํ•„์š”ํ•˜๋‹ค. ์ด ๋ถ€๋ถ„์€ ์ด์ „ ํ”„๋ ˆ์ž„๊ณผ ํ˜„์žฌ ํ”„๋ ˆ์ž„๊ฐ„์˜ ์†๋„๋กœ ๊ณ„์‚ฐํ•ด์„œ ๋“ค์–ด๊ฐ€๋ฉด ๋ฐœ ์ž์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ ๊ฐ™์•„ ๋ณด์ธ๋‹ค.
  • ์ถ”๊ฐ€์ ์ธ Annotation ๋ฐ์ดํ„ฐ ํ•„์š”: ์•„์ง ์ฐฉ์ง€์™€ ๋„์•ฝ์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ์…‹์€ ํ˜„์ €ํžˆ ๋ถ€์กฑํ•˜๊ณ  ์ฃผ๊ด€์ ์ธ ์š”์†Œ๋“ค์ด ๋“ค์–ด๊ฐ„๋‹ค. ์ด์™€ ๊ด€๋ จํ•ด์„œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์ด ํ•„์š”ํ•ด๋ณด์ธ๋‹ค.

๋˜ํ•œ ๋…ผ๋ฌธ์—์„œ๋Š” DWposeEstimator๋ฅผ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ.. coco ํฌ๋งท์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์„œ ๋ณ€ํ™˜ํ•ด์„œ h36m ํฌ๋งท์„ estimate์„ ํ–ˆ์—ˆ๋‹ค. ์ด๋ฏธ ๋‚ด๋ถ€์— hrnet์ด๋ผ๊ณ  2d pose estimator๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์†๋„๋ฉด์—์„œ hrnet์ด estimateํ•˜๋Š”๋ฐ ๋” ๋นจ๋ž์–ด์„œ dwpose๋Š” fallback์šฉ์œผ๋กœ ๋„ฃ์–ด๋‘๊ธฐ๋Š” ํ•ด๋†“์•˜๋‹ค. ์•„, ๊ทธ๋ฆฌ๊ณ .. coco ํฌ๋งท์ด ๋‘ ๊ฐ€์ง€(?)๋‚˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์ด๋ฒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋œฏ์–ด๋ณด๋ฉด์„œ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ๋‚˜๋ฆ„ ์–ป์–ด๊ฐ€๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•˜๋˜ ํ”„๋กœ์ ํŠธ์ธ ๊ฒƒ ๊ฐ™๋‹ค.


References

Authors