2022-02 Kyunghee University Capstone Design 1
View Demo ยท Documentation ยท Paper ยท
๋ณดํต ๊ฐ์ํ๊ฒฝ์์ ์ธํ์ ์กฐ์ข ํ๊ธฐ ์ํด์๋ 3D motion capture ๋๋ Remote manipulator์ ๊ฐ์ Motion control์ ์ํ ํน์ํ ์ผ์๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง ์ด ์ฅ๋น๋ค์ ๊ฐ๊ฒฉ ๋ฑ์ ์ธก๋ฉด์์ ์ง์ ์ฅ๋ฒฝ์ด ๋์ ์ผ๋ฐ ์ฌ์ฉ์๋ค์ด ์ฌ์ฉํ๊ธฐ์๋ ๋ง์ ์ด๋ ค์์ด ์๋ค. ํ๋ก์ ํธ์์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ฌ์ฉ์๋ค์ด ์ข ๋ ์ฝ๊ฒ ๋ค๊ฐ๊ฐ ์ ์๋ ์ฅ๋น์ธ 2๋์ RGB camera๋ฅผ ์ฌ์ฉํ์ฌ ์ค๊ฐ ๋๊ฒ ์ธํ์ ์กฐ์ข ํ๋ค. RGB camera๋ก ์์ ์์ง์์ ์ถ์ ํ์ฌ ์ธํ์ด ์๊ฐ๋ฝ์ ๋ณํ์ ๋ง๊ฒ ์์ง์ผ ์ ์๋๋ก ํ๊ณ , ํน์ ์๋์์ ์ธ์ํด์ ์ ํด์ง ํ๋์ ์ทจํ ์ ์๋๋ก ํ์ฌ ๊ฐ์์ผ๋ก ๊ตฌํํ ์ธํ์ ์กฐ์ข ํ๋ค. ๋ํ ๋ค๋ฅธ RGB camera์์๋ ์ฌ๋์ ์ผ๊ตด์ ์ดฌ์ํ๋ค. ์ดฌ์ํ ์ผ๊ตด์ CNN(Convolution Neural Network)์ ๋ฃ์ด ์ฌ์ฉ์์ ํ์ ์ ์ธ์ํด์ ๊ธฐ์จ, ์ฌํ ๊ฐ์ ๊ฐ์ ๋ค์ ์ถ์ถํ๊ณ ์ด์ ๋ง๊ฒ ์ธํ์ ํ์ ์ ์ ์ฉํ๋ค. ํ๋ก์ ํธ์์ ๊ตฌํํ Virtual puppet์ ์ฌ์ฉ๋ Hand Skeleton Tracking, Hand Gesture Estimation, Emotion Recognition์ RGB camera๋ก๋ง ๊ตฌํ๋์ด ์ปดํจํฐ, ์ค๋งํธํฐ, ์ค๋งํธ tv ๋ฑ ์น์บ ๊ณผ ๊ฐ์ ์นด๋ฉ๋ผ๋ฅผ ์ด์ฉํ ์ ์๋ ๋ค์ํ ์ ์๊ธฐ๊ธฐ์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ฒ์ฉ์ฑ์ ๋์๋ค. ๋ํ Virtual puppet ๋ฟ ์๋๋ผ ์ด๋ฆฐ์ด fun์ฉ, ๋ฉํ๋ฒ์ค ์๋ฐํ ์ปจํธ๋กค, ์ ๋ฌธ๊ฐ์ฉ 3d ๊ฐ์ฒด ์ปจํธ๋กค๊ณผ ๊ฐ์ ๋ค์ํ ๋ถ์ผ์ ์ ์ฉํ ์ ์๋ค.
<
- ์บ๋ฆญํฐ ๋ชจ์ ์ปจํธ๋กค
์บ๋ฆญํฐ๋ฅผ ์ปจํธ๋กค ํ๊ณ ์๋ ์ฌ์ฉ์์ ์ผ์ชฝ ์์ RGB ์นด๋ฉ๋ผ๋ฅผ ํตํด ์ดฌ์ํ๊ณ ์ด๋ ํ๋ํ ์ด๋ฏธ์ง๋ฅผ Mediapipe hand tracking ๋ชจ๋ธ์ ์ ๋ ฅํ์ฌ Hand skeleton ์ ๋ณด๋ฅผ ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ์ป๋๋ค. ํ๋ํ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ ๋๊ฐ์ง ๋ฐฉ์์ผ๋ก ์บ๋ฆญํฐ๋ฅผ ์ปจํธ๋กคํ๋ค. ์ฒซ์งธ, ์์ง, ๊ฒ์ง, ์ค์ง ์๊ฐ๋ฝ์ Skeleton ์ ๋ณด๋ฅผ ์ค์ ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ์บ๋ฆญํฐ์ ์ ์ฒด ์ผ๋ถ๋ถ์ ์กฐ์ข ํ๋ค. ๋จผ์ ์บ๋ฆญํฐ์ ์ค๋ฅธ์ชฝ ํ, ์บ๋ฆญํฐ์ ์๋ฐ์ , ์บ๋ฆญํฐ์ ์ผ์ชฝ ํ ๋ถ๋ถ์ ์์ง, ๊ฒ์ง ๊ทธ๋ฆฌ๊ณ ์ค์ง๋ฅผ ๊ฐ๊ฐ ํ ๋นํ๋ค. ๊ทธ ๋ค์ ๊ฐ ์๊ฐ๋ฝ Joint ๊ฐ์ ์ด์ฉํ์ฌ ํด๋น ์๊ฐ๋ฝ์ ๋ฐฉํฅ ๋ฒกํฐ๋ฅผ ๊ตฌํ๊ณ , ์ด ๋ฒกํฐ๊ฐ์ ์ด์ฉํ์ฌ ์บ๋ฆญํฐ๋ฅผ ์กฐ์ข ํ๋ค.
์ผ์์ด ์บ๋ฆญํฐ ์ ์ฒด ๋ถ๋ถ์ ์ปจํธ๋กค ํ๋ค๋ฉด, ์ค๋ฅธ์์ ์ ํด์ง ์ ์ค์ฒ๋ฅผ ์ทจํด์ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ํด๋น ์ ์ค์ฒ์ ํด๋นํ๋ ๋ชจ์ ์ ํ๋ํ๋๋ก ํ๋ค. ์ฐ์ ์นด๋ฉ๋ผ๋ฅผ ํตํด ์ฌ์ฉ์์ ์ค๋ฅธ์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ค๊ณ , ์ด๋ฅผ Hand tracking ๋ชจ๋ธ์ ๋๊ฒจ์ค๋ค. ๊ทธ๋ฌ๋ฉด Hand tracking ๋ชจ๋ธ์ด ์ค๋ฅธ์์ Skeleton์ ์ถ์ถํ๊ณ ์ถ์ถ๋ Skeleton์ Joint ๋ถ๋ถ์ Pre-trained๋ ์ธ๊ณต์ ๊ฒฝ๋ง์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ก ๋ฃ์ด์ฃผ๋ฉด ์ธ๊ณต์ ๊ฒฝ๋ง์ ๊ฐ ๋ง๋์ ๊ฐ๋๋ฅผ ์ด์ฉํ์ฌ ํ์ฌ ์ด๋ค ์ ์ค์ฒ๋ฅผ ์ทจํ๊ณ ์๋์ง ํ๋จํ๋ค. ํ์ฌ ๋ชจ๋ธ์ ํ์ต์ํจ ์ ์ค์ฒ์ ์ข ๋ฅ๋ ์ด 6๊ฐ์ง๋ก, ํ์ต์ ํ๋ ๋ฐ์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ์ ๊ฐ์๋ ํ 1๊ณผ ๊ฐ๋ค. ์ด๋ ์ ์ค์ฒ๋ค ์ค์์ ์์ ๋ชจ๋ ํผ๋ ์ ์ค์ฒ์ ์์ ์ค๋ฏ๋ฆฐ ์ ์ค์ฒ๋ ์บ๋ฆญํฐ ์กฐ์ข ์ ์์๊ณผ ์ข ๋ฃ๋ฅผ ์์คํ ์๊ฒ ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ค. ์ข ๋ฃ๋ฅผ ํ๊ฒ ๋๋ฉด ์ด์ ์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ ์ด๊ธฐํํ์ฌ ์ฒ์๋ถํฐ ๋ค์ ์์ํ ์ ์๋๋ก ๊ตฌํํ์๋ค. ๋ํ ์ ์ค์ฒ๋ฅผ ์ด์ฉํ์ฌ ์บ๋ฆญํฐ๋ฅผ ์๋ค, ์ข์ฐ๋ก ์ด๋ํ ์ ์๊ฒ ๊ตฌํํ์๋ค. ์ดํ ๋ชจ๋ธ์ด ํ๋จํ ์ ์ค์ฒ๋ฅผ ์์ผ์ ํตํด ์ ๋ํฐ๋ก ์ ์กํ์ฌ ์ฌ์ฉ์๊ฐ ํน์ ์ ์ค์ฒ๋ฅผ ์ทจํ๊ณ ์๋ค๊ณ ์๋ฆฌ๋ฉด ์ ๋ํฐ๋ ํด๋น ์ ์ค์ฒ์ ํด๋นํ๋ ๋ชจ์ ์ ์ฐพ๊ณ , ์บ๋ฆญํฐ๊ฐ ์ด ๋ชจ์ ์ ์ทจํ ์ ์๋๋ก ํ๋ค.
ID | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
Hand Pose | Hand Open | Hand Close | Point | Thumbs Up | Check | Peace |
- ์บ๋ฆญํฐ ํ์ ์ปจํธ๋กค
์ฌ์ฉ์์ ํ์ ๊ณผ ์บ๋ฆญํฐ์ ํ์ ์ ๋งค์นญ์์ผ ์บ๋ฆญํฐ์ ํ์ ์ ์ปจํธ๋กคํ๋ค. ์น์บ ์ ์ด์ฉํด ์ค์๊ฐ์ผ๋ก ์ฐ๊ณ ์๋ ์ผ๊ตด ์์์ ์บก์ณํ์ฌ ์ผ๊ตด ๋ถ๋ถ์ Image๋ฅผ ๊ฒ์ถํ๋ค. ์ด๋ฅผ Pre-train๋ CNN ๋ชจ๋ธ์ ๋ฃ์ด ์ฌ์ฉ์์ ํ์ฌ ํ์ ์ ๋ณด์ ๋ํ ๊ฒฐ๊ณผ๊ฐ์ ๋ฆฌํด๋ฐ๋๋ค. ์ด ๊ฒฐ๊ณผ๊ฐ์ ์ ๋ํฐ์ ์ ์กํด ๋ฏธ๋ฆฌ ๊ตฌํํ Mesh texture ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด ํด๋น ํ์ ๊ณผ ์ผ์นํ๋ ์บ๋ฆญํฐ์ ํ์ ์ผ๋ก ๋ฐ๊ฟ์ค๋ค. ์์ ์ฑํฌ์ ๋ง๊ฒ ์ค์๊ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ฏ๋ก ์ฐ์ฐ๋์ ์ค์ด๊ธฐ ์ํด ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ฌ ๊ฒฝ๋ํํ CNN ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค. ์ด ๋ชจ๋ธ์ Facial Expression Recognition 2013 Dataset์ผ๋ก Pre-train๋์ด ์๋๋ฐ ํด๋น ๋ฐ์ดํฐ์ ์ ํ์ ๋ชจ๋ธ์ ๋๋ถ๋ถ ์์์ธ์ด๋ผ ํ๊ตญ์ธ๊ณผ ์ธ์ข ์ด ๋ฌ๋ผ ์ค์ ๋ก ์ฌ์ฉํ์ ๋ ๋ฏผ๊ฐ๋๊ฐ ๋จ์ด์ง๋ค๋ ๋จ์ ์ด ์๋ค. ๋ฐ๋ผ์ Korean Drama Multi-Label Facial Emotion Recognition Dataset ๋ฐ ์ฌ์ฉ ํ๊ฒฝ์ ๋ง๋ ๋ฐ์ดํฐ๋ก Fine-tuning์ ์งํํ๋ค.
ID | 0 | 1 | 2 | 3 |
---|---|---|---|---|
Emotion | Angry | Happy | Sad | Netrual |
- ์์ ํ๋ฅผ ์ํ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ํธ๋ํน ์คํจ
Frame์์์ ์์ Skeleton ๊ฐ์ด ๊ตฌํด์ง์ง ์๋ ๊ฒฝ์ฐ๋ ๋๊ฐ์ง ์กด์ฌํ๋๋ฐ, ์ฒซ๋ฒ์งธ๋ก๋ ์ค์ ๋ก ์์ด ์๋ ๊ฒฝ์ฐ, ๋๋ฒ์งธ๋ก๋ ์ผ์์ ์ผ๋ก ํธ๋ํน์ ์คํจํ๋ ๊ฒฝ์ฐ์ด๋ค. ์ ์์ ๊ฒฝ์ฐ์๋ ํ๋ ์ ์์์ ์์ Skeleton ์ ๋ณด๋ฅผ ์ป์ง ๋ชปํ๋ ๊ฒ์ด ์ ์์ ์ด์ง๋ง, ํ์์ ๊ฒฝ์ฐ์๋ ์์ Skeleton ์ ๋ณด๊ฐ ๊ตฌํด์ ธ์ผ๋ง ํ๋ค. ๋ฐ๋ผ์ ๋จผ์ ์์ด ์นด๋ฉ๋ผ ์์์ ๋ณด์ด์ง ์๋ ๊ฒฝ์ฐ์ธ์ง ์๋๋ฉด ์ค์ ๋ก ํธ๋ํน์ ์คํจํ ๊ฒฝ์ฐ์ธ์ง ํ๋จํด์ผ ํ๋ค. ์ด๋ฅผ ํ๋จํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ์ ๊ฐ ํ๋ ์์์ ์ป์ ์ Skeleton ์ ๋ณด๋ฅผ Queue์ ๋ฃ๊ณ , Queue์ ํฌ๊ธฐ๋ฅผ ์ผ์ ํ๊ฒ ์ ์งํ๊ธฐ ์ํด์ ์์ฐจ์ ์ผ๋ก ๋ค์ด์จ Skeleton ์ ๋ณด๋ฅผ ์ฐจ๋ก๋ก Queue์์ ๋ด๋ณด๋ธ๋ค. ๋งค๋ฒ Queue์์ ๋ฝ์ ๋ฐ์ดํฐ๋ค์ ์ ๋ํฐ๋ก ๊ฐ์ ์ ์กํ ํ์ ์ด๋ฅผ ์ด์ Frame์ ๋ฐ์ดํฐ ๊ฐ์ ์ ์ฅํด ๋๋ ๊ณณ์ ์ ๋ฐ์ดํธ ํ๋ฉฐ ๊ฐ์ ์ ์ฅํ๋ค. ์ด๋ ๋ง์ฝ Queue์์ ๋ฝ์๋ธ Skeleton ์ ๋ณด์ ์๋ฌด๋ฐ ๊ฐ์ด ์๋ค๋ฉด, Queue์ ์๋ ๋ชจ๋ Skeleton ๋ฐ์ดํฐ ์ ๋ณด๋ค์ ํ์ธํ๋ค. ๋ง์ผ Queue์ ์๋ ๋ชจ๋ Skeleton ๊ฐ ์ญ์ ์กด์ฌํ์ง ์๋๋ค๋ฉด ์ด๋ ์์ด ์นด๋ฉ๋ผ์์ ์ฌ๋ผ์ก๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ง, Queue์ ์๋ skeleton ์ ๋ณด๋ค์ด ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์ด๋ ์ผ์์ ์ธ ํธ๋ํน ์คํจ๋ฅผ ์๋ฏธํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ๋ฏธ๋ฆฌ ์ ์ฅํด ๋์๋ ์ด์ Frame์ ๋ฐ์ดํฐ ๊ฐ์ ๋ถ๋ฌ์ ์ด ๋ฐ์ดํฐ์ ๋์ผํ๊ฒ Skeleton ๊ฐ์ ์ ์ฅํ๊ณ , ์ด๋ฅผ ์ ๋ํฐ ์์ผ๋ก ์ ์กํด์ค๋ค. ๋ง์ง๋ง์ผ๋ก ํ์ฌ ํ๋ ์์ ๊ฐ์ ์ด์ Frame ๋ฐ์ดํฐ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ ํ๋ค.
- Outlier ๋ฐ์ดํฐ ์กฐ์
Hand tracking ๋ชจ๋ธ์ด ํญ์ ์ ๋ขฐ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๋์ถํด๋ด์ง ์๊ธฐ ๋๋ฌธ์, Outlierํ ๋ฐ์ดํฐ๋ฅผ ํ๋ณํ๊ณ ์ด๋ฅผ ์ ์ ํ ๋ฐ์ดํฐ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํด ์ฃผ์ด์ผ ํ๋ค. ์ฐ์ ์ผ์ฐจ์ ์ผ๋ก ๋ชจ๋ธ์ ํตํด ์ป์ ๋ฐ์ดํฐ๊ฐ์ ์ ๋ขฐ๋๊ฐ 50% ๋ฏธ๋ง์ด๋ฉด ํด๋น ๊ฐ์ ์ฌ์ฉํ์ง ์๊ณ , ์ด์ Frame์ ๋ฐ์ดํฐ๊ฐ์ ๋๊ฒจ์ฃผ๊ฒ ๋๋ค. ์ ๋ขฐ๋๊ฐ 50%๋ฅผ ๋๊ฒผ์ง๋ง, ์ฌ์ ํ ๊ฐ์ด Outlier์ธ ๊ฒฝ์ฐ์๋, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ์์ ๋์ผํ๊ฒ Queue์ ์ด์ Frame์ Skeleton๊ฐ์ ์ด์ฉํ๋ค. ๋ง์ฝ ์๋ก ์ธ์ ํ๋ ํ๋ ์(์ด์ Frame๊ณผ ์ดํ Frame)๊ณผ ํ์ฌ Frame์ Skeleton ์๊ฐ๋ฝ ๋ฒกํฐ ์ฐจ์ด๊ฐ ๋ชจ๋ ์ญ์น๋ฅผ ๋ฒ์ด๋๊ฒ ๋๋ค๋ฉด, ์ด๋ ์ ์ ํ์ง ์์ ๋ฐ์ดํฐ๋ผ๊ณ ํ๋จํ๊ณ , ํด๋น ๋ฐ์ดํฐ ๊ฐ์ ์ด์ Frame๊ณผ ์ด์ Frame์ Skeleton ๋ฐ์ดํฐ ๊ฐ์ ํ๊ท ์ผ๋ก ์ค์ ํ๋ค.
- Smoothing
์คํ์ ์งํํ๋ ๊ณผ์ ์์, ์์ด ์์ง์ด์ง ์๋๋ฐ์๋ ๋ถ๊ตฌํ๊ณ ๋ฐ์ดํฐ์ ๊ฐ์ด ์ผ์ ํ๊ฒ ๋์ค์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค. ์ด์ ๋ฐ๋ผ ๋ฐ์ดํฐ์ ๊ฐ์ด ์กฐ๊ธ๋ง ๋ฐ๋๋ ๊ฒฝ์ฐ๋ผ๋ ์บ๋ฆญํฐ์ ํ์ด ๊ณผ๋ํ๊ฒ ๋จ๋ฆฌ๊ฑฐ๋ ์์ง์ด๋ ์ํฉ์ด ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ํ์์ ์ค์ด๊ธฐ ์ํ์ฌ Kalman filter๋ฅผ ์ ์ฉํ์ฌ ์ด์ ๋ฐ์ดํฐ๋ค์ ํตํด ์์ธก ๊ฐ์ ๊ตฌํ๊ณ , ์ค์ ๊ฐ๊ณผ ์ด๋ฅผ ๋น๊ตํ์ฌ Smoothingํ Joint๊ฐ์ ์ป๊ณ ์ ํ์๋ค. ์ด๋ ์์ธก ๊ฐ์ ์ด์ ๊ฐ์์ ์ง๊ธ๊น์ง ํ ํ๋ ์ ๋น ๊ฐ Joint์ ๋ณํ ์ ๋๋ฅผ ๊ณ์ฐํ์ฌ ๊ตฌํ์๊ณ , ๋ถ์ฐ์ ๊ฒฝ์ฐ ๋ชจ๋ธ์ ํตํด ์ป์ ๋ฐ์ดํฐ๊ฐ์ ์ ๋ขฐ๋๋ฅผ ์ด์ฉํ์ฌ ๋ถ์ฐ์ ์ ํ์๋ค. ์ด๋ฅผ ํตํ์ฌ Smoothingํ๊ธฐ ์ ๋ณด๋ค ๋์ฑ ์์ ๋ ์บ๋ฆญํฐ์ ์์ง์์ ํ์ธํ์๋ค.
Clone the tracking project
git clone https://github.com/VirtualPuppet/Handpose.git
git clone https://github.com/VirtualPuppet/UnityProject.git
Setting the environment
conda env create -f setup.yml
Start the server
python hand_socket_smoothing.py
Start our Unity project
If you want to run without Unity
python hand_wo_socket_smoothing.py
Name | |
---|---|
๊ณ ๊ฐ์ฐ | [email protected] |
๋ฌธ์ฃผ์ | [email protected] |
์คํฌ์ฐฌ | [email protected] |
ํ์์ | [email protected] |