Skip to content
@VirtualPuppet

VirtualPuppet

2D Video ์†๋™์ž‘ ์ธ์‹ ๋ฐ ์–ผ๊ตด ๊ฐ์ • ์ธ์‹์„ ํ†ตํ•œ ๊ฐ€์ƒ ์ธํ˜• ์ œ์–ด

2022-02 Kyunghee University Capstone Design 1

View Demo ยท Documentation ยท Paper ยท


Table of Contents

About the Project

screenshot

Motivation

๋ณดํ†ต ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์ธํ˜•์„ ์กฐ์ข…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 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 ๊ฐ์ฒด ์ปจํŠธ๋กค๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Architecture

<

screenshot

Implementation

  • ์บ๋ฆญํ„ฐ ๋ชจ์…˜ ์ปจํŠธ๋กค

์บ๋ฆญํ„ฐ๋ฅผ ์ปจํŠธ๋กค ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž์˜ ์™ผ์ชฝ ์†์„ 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
  • ์•ˆ์ •ํ™”๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ
  1. ํŠธ๋ž˜ํ‚น ์‹คํŒจ

Frame์ƒ์—์„œ ์†์˜ Skeleton ๊ฐ’์ด ๊ตฌํ•ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” ๋‘๊ฐ€์ง€ ์กด์žฌํ•˜๋Š”๋ฐ, ์ฒซ๋ฒˆ์งธ๋กœ๋Š” ์‹ค์ œ๋กœ ์†์ด ์—†๋Š” ๊ฒฝ์šฐ, ๋‘๋ฒˆ์งธ๋กœ๋Š” ์ผ์‹œ์ ์œผ๋กœ ํŠธ๋ž˜ํ‚น์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์ „์ž์˜ ๊ฒฝ์šฐ์—๋Š” ํ”„๋ ˆ์ž„ ์ƒ์—์„œ ์†์˜ Skeleton ์ •๋ณด๋ฅผ ์–ป์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด ์ •์ƒ์ ์ด์ง€๋งŒ, ํ›„์ž์˜ ๊ฒฝ์šฐ์—๋Š” ์†์˜ Skeleton ์ •๋ณด๊ฐ€ ๊ตฌํ•ด์ ธ์•ผ๋งŒ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋จผ์ € ์†์ด ์นด๋ฉ”๋ผ ์ƒ์—์„œ ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์‹ค์ œ๋กœ ํŠธ๋ž˜ํ‚น์— ์‹คํŒจํ•œ ๊ฒฝ์šฐ์ธ์ง€ ํŒ๋‹จํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์šฐ์„  ๊ฐ ํ”„๋ ˆ์ž„์—์„œ ์–ป์€ ์† Skeleton ์ •๋ณด๋ฅผ Queue์— ๋„ฃ๊ณ , Queue์˜ ํฌ๊ธฐ๋ฅผ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ๋“ค์–ด์˜จ Skeleton ์ •๋ณด๋ฅผ ์ฐจ๋ก€๋กœ Queue์—์„œ ๋‚ด๋ณด๋‚ธ๋‹ค. ๋งค๋ฒˆ Queue์—์„œ ๋ฝ‘์€ ๋ฐ์ดํ„ฐ๋“ค์€ ์œ ๋‹ˆํ‹ฐ๋กœ ๊ฐ’์„ ์ „์†กํ•œ ํ›„์— ์ด๋ฅผ ์ด์ „ Frame์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ €์žฅํ•ด ๋†“๋Š” ๊ณณ์— ์—…๋ฐ์ดํŠธ ํ•˜๋ฉฐ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ์ด๋•Œ ๋งŒ์•ฝ Queue์—์„œ ๋ฝ‘์•„๋‚ธ Skeleton ์ •๋ณด์— ์•„๋ฌด๋Ÿฐ ๊ฐ’์ด ์—†๋‹ค๋ฉด, Queue์— ์žˆ๋Š” ๋ชจ๋“  Skeleton ๋ฐ์ดํ„ฐ ์ •๋ณด๋“ค์„ ํ™•์ธํ•œ๋‹ค. ๋งŒ์ผ Queue์— ์žˆ๋Š” ๋ชจ๋“  Skeleton ๊ฐ’ ์—ญ์‹œ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ด๋Š” ์†์ด ์นด๋ฉ”๋ผ์—์„œ ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋งŒ, Queue์— ์žˆ๋Š” skeleton ์ •๋ณด๋“ค์ด ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋Š” ์ผ์‹œ์ ์ธ ํŠธ๋ž˜ํ‚น ์‹คํŒจ๋ฅผ ์˜๋ฏธํ•˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ฏธ๋ฆฌ ์ €์žฅํ•ด ๋‘์—ˆ๋˜ ์ด์ „ Frame์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€ ์ด ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•˜๊ฒŒ Skeleton ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , ์ด๋ฅผ ์œ ๋‹ˆํ‹ฐ ์ƒ์œผ๋กœ ์ „์†กํ•ด์ค€๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜„์žฌ ํ”„๋ ˆ์ž„์˜ ๊ฐ’์„ ์ด์ „ Frame ๋ฐ์ดํ„ฐ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

  1. Outlier ๋ฐ์ดํ„ฐ ์กฐ์ •

Hand tracking ๋ชจ๋ธ์ด ํ•ญ์ƒ ์‹ ๋ขฐ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„์ถœํ•ด๋‚ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, Outlierํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒ๋ณ„ํ•˜๊ณ  ์ด๋ฅผ ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์šฐ์„  ์ผ์ฐจ์ ์œผ๋กœ ๋ชจ๋ธ์„ ํ†ตํ•ด ์–ป์€ ๋ฐ์ดํ„ฐ๊ฐ’์˜ ์‹ ๋ขฐ๋„๊ฐ€ 50% ๋ฏธ๋งŒ์ด๋ฉด ํ•ด๋‹น ๊ฐ’์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์ด์ „ Frame์˜ ๋ฐ์ดํ„ฐ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๊ฒŒ ๋œ๋‹ค. ์‹ ๋ขฐ๋„๊ฐ€ 50%๋ฅผ ๋„˜๊ฒผ์ง€๋งŒ, ์—ฌ์ „ํžˆ ๊ฐ’์ด Outlier์ธ ๊ฒฝ์šฐ์—๋Š”, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์œ„์™€ ๋™์ผํ•˜๊ฒŒ Queue์™€ ์ด์ „ Frame์˜ Skeleton๊ฐ’์„ ์ด์šฉํ•œ๋‹ค. ๋งŒ์•ฝ ์„œ๋กœ ์ธ์ ‘ํ•˜๋Š” ํ”„๋ ˆ์ž„(์ด์ „ Frame๊ณผ ์ดํ›„ Frame)๊ณผ ํ˜„์žฌ Frame์˜ Skeleton ์†๊ฐ€๋ฝ ๋ฒกํ„ฐ ์ฐจ์ด๊ฐ€ ๋ชจ๋‘ ์—ญ์น˜๋ฅผ ๋ฒ—์–ด๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์ด๋Š” ์ ์ ˆํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํŒ๋‹จํ•˜๊ณ , ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ด์ „ Frame๊ณผ ์ด์ „ Frame์˜ Skeleton ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ํ‰๊ท ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

  1. Smoothing

์‹คํ—˜์„ ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ, ์†์ด ์›€์ง์ด์ง€ ์•Š๋Š”๋ฐ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ์ผ์ •ํ•˜๊ฒŒ ๋‚˜์˜ค์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ์กฐ๊ธˆ๋งŒ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ๋ผ๋„ ์บ๋ฆญํ„ฐ์˜ ํŒ”์ด ๊ณผ๋„ํ•˜๊ฒŒ ๋–จ๋ฆฌ๊ฑฐ๋‚˜ ์›€์ง์ด๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ์ค„์ด๊ธฐ ์œ„ํ•˜์—ฌ Kalman filter๋ฅผ ์ ์šฉํ•˜์—ฌ ์ด์ „๋ฐ์ดํ„ฐ๋“ค์„ ํ†ตํ•ด ์˜ˆ์ธก ๊ฐ’์„ ๊ตฌํ•˜๊ณ , ์‹ค์ œ ๊ฐ’๊ณผ ์ด๋ฅผ ๋น„๊ตํ•˜์—ฌ Smoothingํ•œ Joint๊ฐ’์„ ์–ป๊ณ ์ž ํ•˜์˜€๋‹ค. ์ด๋•Œ ์˜ˆ์ธก ๊ฐ’์€ ์ด์ „ ๊ฐ’์—์„œ ์ง€๊ธˆ๊นŒ์ง€ ํ•œ ํ”„๋ ˆ์ž„ ๋‹น ๊ฐ Joint์˜ ๋ณ€ํ™” ์ •๋„๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ตฌํ•˜์˜€๊ณ , ๋ถ„์‚ฐ์˜ ๊ฒฝ์šฐ ๋ชจ๋ธ์„ ํ†ตํ•ด ์–ป์€ ๋ฐ์ดํ„ฐ๊ฐ’์˜ ์‹ ๋ขฐ๋„๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ถ„์‚ฐ์„ ์ •ํ•˜์˜€๋‹ค. ์ด๋ฅผ ํ†ตํ•˜์—ฌ Smoothingํ•˜๊ธฐ ์ „๋ณด๋‹ค ๋”์šฑ ์•ˆ์ •๋œ ์บ๋ฆญํ„ฐ์˜ ์›€์ง์ž„์„ ํ™•์ธํ•˜์˜€๋‹ค.

Getting Started

Installation

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

Team Member

Name Email
๊ณ ๊ฐ•์—ฐ [email protected]
๋ฌธ์ฃผ์€ [email protected]
์œคํฌ์ฐฌ [email protected]
ํ•œ์˜ˆ์› [email protected]

Pinned Loading

  1. Handpose Handpose Public

    Python 1

Repositories

Showing 4 of 4 repositories
  • .github Public
    VirtualPuppet/.githubโ€™s past year of commit activity
    0 CC0-1.0 1 0 0 Updated Dec 15, 2022
  • Handpose Public
    VirtualPuppet/Handposeโ€™s past year of commit activity
    Python 0 1 0 0 Updated Dec 15, 2022
  • UnityProject Public
    VirtualPuppet/UnityProjectโ€™s past year of commit activity
    C# 0 0 0 0 Updated Dec 13, 2022
  • Azure-Kinect Public
    VirtualPuppet/Azure-Kinectโ€™s past year of commit activity
    C++ 0 0 0 0 Updated Oct 5, 2022

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ