Azure Kinect를 이용한 실감형 콘텐츠 개발 외주 후기

1. 프로젝트 요청 사항

 

약 4평 정도의 전시 공간에 사람이 들어오면 사람을 인식하고, 사람의 아바타를 벽면에 프로젝션 하고, 특정한 행위를 하면 이벤트가 발생되는 형태의 시스템

 

해결 문제 : 사람 인식, 사람의 위치와 벽면에 투영된 아바타와의 위치 매핑, 특정한 행위 추정과 이벤트 발생

 


2. 사용 하드웨어 및 소프트웨어

 

유니티, Azure Kinect / 카메라 설치와 프로젝션 설치는 하드웨어 팀 진행함

 


3. 후기

 

Azure kinect를 유니티에서 사용할 때 에셋을 구매해서 사용하면 편리하게 기능들을 구현할 수 있음, 에셋은 2개가 있는데 왼쪽에 있는 에셋이 기능이 더 많음, 코드 공부를 해도 왼쪽이 더 공부할게 많음, 처음부터 구현하기보다 그냥 돈 주고 사는 게 편함

 

Azure Kinect 에셋스토어

 

Azure Kinect의 경우 지원하는 각도로 설치를 해야 사람을 잘 인식한다. Segmentation과 Pose Estimation을 하는데 학습 데이터가 대부분 지원하는 각도로 학습된 데이터 인 듯하다. 그러나 필자의 카메라 설치는 45도로 설치되어 잘 잡히지 않았다. 특히 발 쪽을 잘 잡지 못했다. 거기에 카메라가 설치된 높이 또한 높았다. 그래서 더 사람을 인식하기 힘들었다. 그래서 Azure kinect에서 지원하는 해상도 중 해상도를 낮게 하지만 인식 범위가 긴 설정을 하여 문제를 조금 해결했다. 

 

 

키넥트가 사람의 앞을 인식하건 뒤를 인식하건 큰차이가 없다. 앞이 더 인식을 잘하지만 뒤에 있다고 해서 인식을 못하는 건 아니다. 범위가 가장 중요한듯하다. 또한 키넥트의 경우 빛의 반사로 depth를 측정하기 때문에 빛을 잘 흡수하는 재질의 옷을 입은 경우 잘 인식하지 못할 수 있다.

 

특정한 행위 추정의 경우는 어려운 행동들이 아니기 때문에 각 관절의 각도를 이용해서 추정함. 어려웠으면 딥러닝을 통해 학습하고 추정하려 했으나 다행히 어려운 행동이 아니었음,아바타를 벽면에 프로젝션 맵핑 하는 경우 좌우 맵핑은 쉽게 했으나, 사용자가 앞 뒤로 움직이는 경우 맵핑이 어려웠음, 사람이 뒤로 움직이면 그에 따라 아바타가 작아지고, 벽면에 공중 부양하는 것과 같은 형태로 나타나기에 일정 크기를 유지하며, 바닥면에 붙은 아바타가 생성하도록 하는 부분을 해결하기 위해 키넥트의 하드웨어 각도에따라 유니티 공간의 아바타를 비추는 카메라의 각도를 변경해 줬고, 유니티의 원근 카메라를 원근이 없는 카메라로 변경하여 문제를 해결

 


4. 추후 Azure kinect를 사용하는 경우 고려할 점

 

Azure Kinect를 사용하려는 경우 무조건 공간적 여유를 가지고, 잘 잡히는 위치에 먼저 설치 후 시스템을 그곳에 맞춰서 구현할 것, Azure kinect를 사용하는 것보다 직접 공간에서 찍은 사진으로 딥러닝 네트워크를 학습한 후 onnx 확장자로 뽑은후 유니티에서 사용하는 것이 더 좋을 듯함. 매번 Azure kinect의 딥러닝 네트워크를 보완해서 마이크로소프트 공식문서에 제공해 주나 성능이 그렇게 좋지는 않음