KinectProjectorToolKit 으로 데모 실행하기.

Share

.

여태까지는 그냥 모니터로 키넥트의 인식결과를 출력하였다. 이제는 키넥트로 사람과 배경을 인식한 것을 프로젝터로 피사체에 쏘아 mapping하는 과정을 한다. 이때 쓰는 코드는 https://github.com/genekogan/KinectProjectorToolkit 을 사용한다.

여태까지 했던 kinect flow, physics 등은 사실 피사체에 프로젝터로 mapping을 하는 목적이 아니고 그냥 대형화면에 띄우는 듯한 목적이다. 하지만 위 코드는 키넥트로에서 프로젝터로 투영시킬 대상과, 배경이 될 스크린 등 상대적 거리를 키넥트의 depth(거리)센서로 같이 인식하면서 진행한다. 쉽게 말해서 키넥트와 스크린 사이의 모든 물체의 위치를 구해내고 그걸 바탕으로 프로젝터로 하여금 대상과 배경에 영상을 투영시킨다.

위 사진 처럼, 스크린과 사물을 키넥트의 depth센서로 인식하고 대상을 "감싸는", 즉 대상보다 조금 큰 테두리를 프로젝터로 투영시킨다. 결과적으로 나는 움직여도 저 테두리는 나에 투영되지 않는다. 이런 작업을 하기위해서는 다시 말해서 프로젝터로 투영시킬 스크린과 사물을 키넥트로 미리 인식하고 calibrationg하는 작업을 아래 사진 처럼해야한다.

다음과 같은 체크보드 모양 격자를 맥북의 KinectProjectorToolkit의 프로그램을 실행시켜 투영시킨다. 그리고 kinect로 투영시킨 격자가 실제 물리적으론 어디에 존재하는지 인식시키고 point들을 모은다. 우리는 사물을 다양한 depth에서 물체를 인식시키고 싶으므로 움직일 수 있는 스크린을 다양한 거리에서 체크보드를 인식시켜야한다.

Calibration 과정

사실 tutorial이 이미 github의 READEME.md에 이미 글과 심지어 영상으로 친절하게 설명되어있다.

Kinect Projector Toolkit Tutorial from Gene Kogan on Vimeo.

이를 우리말로 간략히 설명하자면,

  1. KinectProjectToolkit code를 github에서 다운받는다.
  2. 프로젝터를 연결한 상태에서, 미러링을 풀고 화면의 해상도를 CALIBRATION.pde의 code에 반영시킨다.
  • int pWidth = 1280; int pHeight = 1024;
  1. ./examples/CALIBRATION 폴더에 있는 GUI를 실행시킨다.
  • 만약 에러가 GUI.pde의 guiCpos 라이브러리에서 guiCpos.arrayValue() 함수에서 에러를 발생시키면 guiCpos.getArrayValue() 으로 수정한다. 라이브러리 구버전 code의 API가 업데이트 되면서 생긴 에러이다.
  1. 체크보드를 움직이면서 Calibration을 진행한다.
  • 다음과 같은 프로그램이 실행되고 체크보드의 사이즈와 위치를 GUI로 조절할 수 있다. 체크보드를 인식하면 6개의 초록 점이 체크보다 꼭지점에 인식이 되고, ADD PAIR버튼으로 추가시켜주면 된다. 이 작업을 3번 다양한 거리에서 위 아래 2번씩, 화면의 왼쪽, 중앙, 오른쪽 3번씩, 총 18번만 해주어도 충분했다. 즉 3x2x3=18 위치에서 18x6=108 개의 점을 시킨다.
  1. CALIBRATE 버튼을 누르고 Test 해본다.
  • 이때 맥북 모니터상의 영상에 아무곳이나 마우스로 찍으면 빨간점이 생기고, 실제 프로젝터는 초록점을 동일한 물리 공간에 투영시킨다. 따라서 이상적으로 calibration이 되었다면 우리가 맥북의 화면으로 본다면 초록점은 빨간점에 가리게된다.
  1. 위 과정이 성공적으로 이루어졌다면, SAVE버튼을 눌러 ./examples/CALIBRATION/data/calibration.txt 의 결과물을 생성한다. 이 파일을 다른 예제, ./examples/TestRibons/data/ 등 에 복사해서, calibration 된 값으로 영상을 투영시키면 된다.

Read more

허깅페이스 르로봇 해커톤 후기

허깅페이스 르로봇 해커톤 후기

본 블로그의 주인장들은 이번 허깅페이스의 르로봇 월드와이드 해커톤의 서울 호스트를 맡았습니다. 너무 재밌었고, 그 과정들과 후기를 남깁니다. 현장은 다큐 형식의 작은 영상을 만들었으니 한번 봐주세요. 계기 저는 LLM 만 하고 있었고, Action 모델은 사실 관심이 없었습니다, 준호는 1년 정도 로봇에 AI 를 넣는 일을 하고 있었죠. 허깅페이스에서 르로봇 플랫폼을 만들고

By park jong hyun
DeepDive LLM 3편 - Reinforcement Learning

DeepDive LLM 3편 - Reinforcement Learning

* 1편 - 사전 학습 (Pre Training) * 2편 - Supervised Fine Tuning * 3편 - Reinforcement Learning Reinforcement Learning Pretrain, SFT 에 이어서 세번째 단계는 Reinforcement Learning (RL, 강화학습) 입니다. 비유를 해보자면, pretrain은 그냥 책을 읽는 것이고요, SFT는 예제 문제와 이미 작성된 해설을 보는 것입니다. RL 은 해설이 없는 문제를 직접 풀어보는 것입니다. 어떻게 풀든

By park jong hyun
DeepDive LLM 2편 - Supervised Fine Tuning

DeepDive LLM 2편 - Supervised Fine Tuning

* 1편 - 사전 학습 (Pre Training) * 2편 - Supervised Fine Tuning * 3편 - 강화 학습 (Reinforcement Learning) Supervised Fine Tuning Post Training 의 첫번째 단계 SFT 입니다. Pre Training 에 비하면 아주 작은 양의 데이터만 필요하지만, 실제로 성능을 이끌어 내는데에는 중요한 단계입니다. 멀티턴 대화 (Multi Turn Conversation) ChatGPT 를 포함해서 대부분의 AI 서비스들은

By park jong hyun
DeepDive LLM 1편 - 사전 학습 (Pre-Training)

DeepDive LLM 1편 - 사전 학습 (Pre-Training)

본 포스트 시리즈는 카파시 선생님의 영상 을 기반으로 정리한 내용입니다. 직접 유투브에서 다루기도 했으니 영상으로 보셔도 됩니다. * 1편 - 사전 학습 (Pre-Training) * 2편 - Supervised Fine Tuning * 3편 - 강화 학습 (Reinforcement Learning) LLM 의 Training LLM을 만들 때는 크게 세 가지 주요 단계가 있습니다. 1. 사전 학습(Pre-Training) * 인터넷 텍스트(

By park jong hyun